`
xiejin2008
  • 浏览: 125435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate,Ext ,Json ,Strut2整合常见错误及解决办法

    博客分类:
  • J2EE
阅读更多

 

 对Hibernate和Ext,Strut2综合开发经验不多。这次算是第一次,遇到了很多问题,每遇到一个问题,都把他记录起来,简单零散的整理啦一下.还是

1、======================================================================================
使用MyEclipse创建JavaEE5.0的Web项目,在使用Hibernate3.5.1的注解功能时出现错误

java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z 。
我程序出现找个错误,主要是在建立关系之后,如果实体,没有通过注解建立关系,就不会出现错误。

解决办法:删除对Java EE 5 Libraries的使用。

问题原因:javaee.jar中的部分类与hibernate-jpa-2.0-api-1.0.0.Final.jar存在版本冲突。
但是如果删除了Java EE 5 Libraries,Web的Servelt又使用不了啦.
后面还是降低hibernate的版本为3.3
请高手,指教指教找个问题。


2、======================================================================================

Duplicate class/entity mapping
Could not parse configuration: /hibernate.cfg

Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping

Caused by: org.dom4j.DocumentException: FWK005 parse may not be called while pa
sing. Nested exception: FWK005 parse may not be called while parsing.

这些错误的解决方法:

总结:
网上搜索的答案:HibernateSessionFactory 中 getSession() 方法加一个 synchronized 就可以实现.
最终解决之后,还是发现,实体注解配置发生了错误,自己检查注解关系配置。

3、===============================================================================================================

复合主键. 不错的文章.
http://taeky.iteye.com/blog/553220
http://fpjason.iteye.com/blog/544088
这边文字也非常详细:
http://www.ll19.com/bb/topic/109#

4、=========================================================================================================
Oracle里面,创建一个序列
 create sequence hibernate_sequence

 minvalue 1
 maxvalue 999999999
 start with 1
 increment by 1
 cache 20
 cycle;

Oracle里面自动增长主键.

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer           ID               ;
    private String            NAME             = "";
    private String            PATHNAME         = "";

5、==================================================================================================================

项目使用hibernate 并使用annotation进行对象映射,开始时提示如下:

Error:org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.zitong.beans.User"/ >

解决办法:

在hibernatefactory配置文件中,不要用Configuration()用AnnotationConfiguration() 此错误解决!

==============================================================================================================================
异常:oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys
换一个驱动解决这个问题,推荐使用classes12.jar
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z
 at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:123)
 at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
 at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
 at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
 at com.dao.sessionfactory.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:32)
 at com.dao.CommDao.addObject(CommDao.java:39)
 at com.dao.MeasCodeDao.addMeasCode(MeasCodeDao.java:20)
 at com.service.MeasCodeService.addMeaCode(MeasCodeService.java:16)
 at com.test.MeascodeTest.testAddMeaCode(MeascodeTest.java:18)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
 at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
 at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
 at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
 at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
 at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

======================================================================================================

6、many to one 配置终于成功啦
非常感谢这篇文章:
http://topmanopensource.iteye.com/blog/532217
它里面值得注意的好东西是:
"(1)在乘客表中order和orderId,同时映射一张表的时候,必须设置insertable = false, updatable = false否则将报错,order对象必须设置inserte = false, update = false."
"(2)在关联的订单中乘客发生变化时必须将关联的Id设置为null.否则数据库中的乘客的信息不会发生变化."

7、========================================================================================================

使用json-lib的转换hibernate查询出来的list对象集合的时候需要注意的地方.
很多时候数据表都有外键表的,当用hibernate查询结果集时,其关联的对象集也一起来,所以会造成转换JSON发生错误;

以下是一段查询 城市表 的,其关联的主键表是 省份名表,
以下是方法里的代码,需要 import net.sf.json.*;

List list1=new hi.TCityDAO().findAll();
  List li=new ArrayList();//用于装入用来转成JSON的List
  for (Iterator iterator = list1.iterator(); iterator.hasNext();) {
   TCity object = (TCity) iterator.next();
   object.setTProvince(null); //将省份表的对象设为空,不然会出错,出错的原因也在此
   li.add(object);
  }

//这个地方要注意,如果是javabean对象时要用 JSONObject json=JSONObject.fromObject(objece);
  JSONArray json=JSONArray.fromObject(li);  

  System.out.println(json.toString()); //最后输出的JSON字符串

8、==============================================================================================================
下列异常>>>>
2010-4-30 16:06:57 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
严重: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
在数据库中,如果设置了约束关系,那么一定要允许级联删除,否则,你在执行删除时会抛出异常。
010-4-30 16:06:57 org.hibernate.util.JDBCExceptionReporter logExceptions
警告: SQL Error: 2292, SQLState: 23000
2010-4-30 16:06:57 org.hibernate.util.JDBCExceptionReporter logExceptions
严重: ORA-02292: 违反完整约束条件 (CIM.FK_PSR_MEASUREMENT) - 已找到子记录

2010-4-30 16:06:57 org.hibernate.util.JDBCExceptionReporter logExceptions
警告: SQL Error: 2292, SQLState: 23000
2010-4-30 16:06:57 org.hibernate.util.JDBCExceptionReporter logExceptions
严重: ORA-02292: 违反完整约束条件 (CIM.FK_PSR_MEASUREMENT) - 已找到子记录

2010-4-30 16:06:57 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
严重: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
 at com.ydtf.lcj.lcjpt.dao.core.CommDao.deleteObject(CommDao.java:64)
 at com.ydtf.lcj.lcjpt.dao.core.PowerSystemResourceDao.deletePowerSystemResource(PowerSystemResourceDao.java:30)
 at com.ydtf.lcj.lcjpt.service.core.PowerSystemResourceService.deletePowerSystemResource(PowerSystemResourceService.java:27)
 at com.ydtf.lcj.lcjpt.action.sys.PowerSystemResourceAction.del(PowerSystemResourceAction.java:81)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
 at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
 at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
 at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
 at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
 at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
 at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
 at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (CIM.FK_PSR_MEASUREMENT) - 已找到子记录
)

问题的关键在如下两点:

1.       数据库中要允许数据表的级联删除

2.       在映射文件中要将级联删除配置正确

主要是   数据库中要允许数据表的级联删除   千万不能忘记  
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kangojian/archive/2008/08/21/2808001.aspx
===========.>>>>
但是后来我测试后,
如果数据库里面建立表之间的关系,但是没有建立级联删除,修改等。
我也同样可以根据"一"方,同时删除“多”方的数据。

 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,mappedBy="meascode")
    private Set<Measurement>  Measurements;
   
Hibernate: delete from CIM.MEASUREMENT where ID=? and MEASCODE=?
Hibernate: delete from CIM.MEASUREMENT where ID=? and MEASCODE=?
Hibernate: delete from CIM.MEASUREMENT where ID=? and MEASCODE=?
Hibernate: delete from CIM.POWERSYSTEMRESOURCE where ID=?
确实是成功啦,删除成功的概率很大.
删除失败的几率很小很小.
但是我可以偶然到一次 ,又重新报上面的异常(如果没有建立数据库的级联的话).
如果又等上以两分钟,重新刷新页面,惊奇的发现又可以删除啦,真是怪怪..,请高手指教。

9、==============================================================================================================


在运行过程中出现
ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误weblogic异常退出。
原因:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
为了使用3.0的批量更新和删除功能,只能选择(1)否则不能解释批量更新的语句,当使用的时候出现了不支持条件输入中文的情况。选择(2)可以支持输入中文,但没法解释批量更新语句了
在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无法找到在war或者ear中的hibernate3.jar。
出现这个错误之后,antlr会调用System.exit(),这样weblogic就会中止服务。
解决方法:
1.是在hibernate.properties文件中增加属性:hibernate.query.factory_class,属性的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactory,这样就可以解决问题了。
但是部分功能会有问题,譬如
但本系在批量删除和更新会有问题,本系统不采用
2.将antlr-2.7.5H3.jar到Weblogic的pre_Classpath :用WinRar或Winzip打开C:\bea\weblogic81\server\lib\weblogic.jar 删除里面的antlr目录, 然后再antlr-2.7.5H3.jar放在weblogic.jar的同一目录(注:替换之后没做做过严格测试,尚不知是否有后遗症)
3. 1、拷贝Hibernate3里带的包antlr-2.7.5H3.jar到%WL_HOME%\server\lib下
2、修改% mydomain% \ startWebLogic.cmd :
在set CLASSPATH之前加上下面一句:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
在set CLASSPATH之后加上下面一句:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
一切OK!
具体原因可参照此页:http://dev2dev.bea.com/blog/pmalani/archive/2005/07/configuring_web.html
=====>>
当我执行HQL语句:
select count(*) from MyTest 时候报了以上的错误.
我按照它的方法
在hibernate.cfg.xml文件加了这句话,果然搞定啦.
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory


10、==============================================================================================================

   Json转换hiberate查询出来的 List对象集合。
 There is a cycle in the hierarchy! 这个真的是个郁闷的问题 :
Hibernate: select measuremen0_.MEASCODE as MEASCODE2_, measuremen0_.ID as ID2_, measuremen0_.ID as ID5_1_, measuremen0_.MEASCODE as MEASCODE5_1_, measuremen0_.ALIASNAME as ALIASNAME5_1_, measuremen0_.MAXVALUE as MAXVALUE5_1_, measuremen0_.MINVALUE as MINVALUE5_1_, measuremen0_.PATHNAME as PATHNAME5_1_, measuremen0_.POINTNAME as POINTNAME5_1_, powersyste1_.ID as ID6_0_, powersyste1_.ALIASNAME as ALIASNAME6_0_, powersyste1_.DESCRIPTION as DESCRIPT3_6_0_, powersyste1_.ISAVAILABLE as ISAVAILA4_6_0_, powersyste1_.NAME as NAME6_0_, powersyste1_.PATHNAME as PATHNAME6_0_, powersyste1_.PSRTYPE as PSRTYPE6_0_ from CiM.MEASUREMENT measuremen0_ inner join CIM.POWERSYSTEMRESOURCE powersyste1_ on measuremen0_.ID=powersyste1_.ID where measuremen0_.MEASCODE=?
net.sf.json.JSONException: There is a cycle in the hierarchy!
 at net.sf.json.util.CycleDetectionStrategy$StrictCycleDetectionStrategy.handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:73)
 at net.sf.json.JSONObject._fromBean(JSONObject.java:658)
 at net.sf.json.JSONObject.fromObject(JSONObject.java:182)
 at net.sf.json.JSONObject._processValue(JSONObject.java:2426)
 at net.sf.json.JSONObject._setInternal(JSONObject.java:2447)
 at net.sf.json.JSONObject.setValue(JSONObject.java:1189)
 at net.sf.json.JSONObject._fromBean(JSONObject.java:725)
 at net.sf.json.JSONObject.fromObject(JSONObject.java:182)
 at net.sf.json.JSONArray._processValue(JSONArray.java:2294)
 at net.sf.json.JSONArray.processValue(JSONArray.java:2325)
 at net.sf.json.JSONArray.addValue(JSONArray.java:2312)
 at net.sf.json.JSONArray._fromCollection(JSONArray.java:841)
 at net.sf.json.JSONArray.fromObject(JSONArray.java:137)
 at net.sf.json.JSONObject._processValue(JSONObject.java:2402)
 at net.sf.json.JSONObject._setInternal(JSONObject.java:2447)
 at net.sf.json.JSONObject.setValue(JSONObject.java:1189)
 at net.sf.json.JSONObject._fromBean(JSONObject.java:725)
 at net.sf.json.JSONObject.fromObject(JSONObject.java:182)
 at net.sf.json.JSONArray._processValue(JSONArray.java:2294)
 at net.sf.json.JSONArray.processValue(JSONArray.java:2325)
 at net.sf.json.JSONArray.addValue(JSONArray.java:2312)
 at net.sf.json.JSONArray._fromCollection(JSONArray.java:841)
====================================================================================================
当遇到这个问题的时候:
There is a cycle in the hierarchy!
需要将在实体关系一对多中的.
将"一"这方里面的 "多"的Set 集合的属性,生成json的时候过滤。
关键代码:
jsonConfig.setExcludes ( new String[] { "handler", "hibernateLazyInitializer", "measurements", "powerSystemResource" } );
measurements,powerSystemResource。这两个都是set集合的变量。


11、======================================================================================================

Ext.

 

如果一个一对多的关系,在查询多的一方的时候,需要在grid里面显示一方的名称.(原只是引用ID)
当添加,多的一方的时候,gird不会立即查询数据库,需要有一下的设置才能够立即查询数据库.
如果要求保存后,立即查询数据库.
实例:
powerSysResource.setALIASNAME ( powerSysResourceAliasName );
powerSysResource.setDESCRIPTION ( powerSysResourceDescription );
powerSysResource.setISAVAILABLE ( powerSysResourceIsAvailable );
powerSysResource.setNAME ( powerSysResourceName );
powerSysResource.setPATHNAME ( powerSysResourcePathName );
powerSysResource.setIntPsrType ( powerSysResourcePsrType );

powerSysResource.setPsrType ( psrTypeService.getPsrTypeByID ( powerSysResourcePsrType ) ); 映射的时候,添加外键的映射,也添加外键对象的映射,。找个地方需要设置type对象,也要设置typeid.

 

5
1
分享到:
评论

相关推荐

    JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str

    在标签"json_hibernate extjs json_struts_ext jsp_json_extjs struts2"中,"json_struts_ext"和"jsp_json_extjs"暗示了JSON在Struts2扩展和JSP与ExtJS之间的交互作用。可能有一个配置或者插件用于让Struts2的动作类...

    Ext+struts2+spring+hibernate做的一个CRUD实例

    用EXT+struts2+spring+hibernate做的一个增删改查实例,主要用到了EXTjs里面的部分组件,用JSON与服务端交互,实现一个增删改查的功能!本地MYsql数据库,sql文件在根目录下面,建好库既可以运行!当然,还是需要在...

    struts与ext集成

    Struts2和EXT的集成是Java Web开发中的一个重要主题,特别是在构建用户界面时追求美观、交互性强的应用。这篇教程将深入探讨如何将这两者结合,为开发者提供一个更高效的开发环境。 **Struts2框架** Struts2是...

    struts2+spring2.5.6+hibernate3.0+ext整合开发

    在"struts2+spring2.5.6+hibernate3.0+ext"的整合开发中,通常会使用Spring来管理Struts2的Action类,实现业务逻辑的解耦。同时,Spring可以作为Hibernate的事务管理器,处理数据库操作。Ext则用于创建前端用户界面...

    Struts2+Spring2.5+jdbc+Ext+json实例的lib包

    在"Struts2+Spring2.5+jdbc+Ext+json实例的lib包"中,可能包含了上述技术的相应库文件,如Struts2的struts2-core、spring的spring-context、jdbc驱动、Ext库文件(如ext-js和ext-core)以及用于处理JSON的json-lib或...

    Struts2+hibernate+Ext 流程管理系统

    这个系统用到的框架有hibernate ,struts2,ext,mysql,这是一个简单的框架,做了简单的增加,里面有建表语句,和说明,能帮助你对hibernate struts2,json,ext,有一个基本认识

    struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合笔记(一)

    Struts2、Spring和Hibernate是Java开发中常用的三大框架,它们各自负责Web应用的不同层面:Struts2处理表现层逻辑,Spring提供业务层管理和依赖注入,而Hibernate则负责持久化层,管理数据库交互。在本笔记中,我们...

    struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合笔记(二)

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在模型-视图-控制器(MVC)架构中承担不同的职责。Struts2作为控制器,负责处理HTTP请求;Spring提供依赖注入(DI)和面向切面编程(AOP),用于...

    ext+struts2+spring+hibernate 树型菜单

    "ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...

    用Ext js,Hibernate,Struts2,json,Session,iterator构建的Demo。iterator_jsonDemo2的升级版。

    1.用Ext js,Hibernate3,Struts2,json,Session,iterator构建的Demo。2.iterator_jsonDemo2的升级版。iterator_jsonDemo2的链接:http://download.csdn.net/detail/cafebar123/8894139 3.将数据库中数据从后台传到...

    ssh实验代码 dwr ext3 struts2 spring3 json都有

    SSH(Struts2、Spring3、Hibernate)是一个流行的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。DWR(Direct Web Remoting)则是一个JavaScript库,它允许在浏览器和服务器之间进行实时的、双向通信。...

    EXT2.1+struts2+spring2.5+hibernate3.2

    开发者可以通过这些资源学习如何将EXT2.1的前端展示与Struts2的控制器、Spring的服务层和Hibernate的数据访问层进行整合,从而实现一个完整的Java Web应用。这个实例对于初学者来说是一个很好的学习平台,因为它涵盖...

    ssh整合例子(spring3 + struts2 + hibernate4+dwr+ext+json)

    内含 ext+dwr+freemark+jasperreort+ireport+echance+oscache+velocite等技术 展示例子:http://zz563143188.iteye.com/blog/1462413 若要下载chm格式请到http://user.qzone.qq.com/563143188 程序源码下载地址10MB...

    Hibernate+Spring+Struts2+ExtJS CRUD

    在IT行业中,构建高效、可维护的Web应用是至关重要的,而SSH(Spring、Struts2、Hibernate)和ExtJS的结合使用就是一种常见的解决方案。本文将深入探讨如何利用这些技术实现CRUD(创建、读取、更新和删除)功能,并...

    图书管理系统(struts+hibernate+spring+ext).zip

    本系统采用经典的SSH2(Struts2、Hibernate、Spring)框架结合EXT.js前端技术,构建了一个高效、易维护的Web应用程序。以下将对这些技术进行详细介绍,并探讨它们在系统中的应用。 1. Struts2:Struts2是MVC(Model...

    SSH+EXT如何返回JSON

    本文将以SSH(Struts2 + Spring + Hibernate)框架结合EXT框架为例,详细介绍如何通过SSH框架将数据转化为JSON格式并传递给EXT前端。 #### 二、环境配置 在开始之前,我们需要确保项目中已经正确配置了SSH框架的...

    Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例

    在IT行业中,构建Web应用程序是常见的任务,而“Hibernate+Spring+Struts2+ExtJS开发CRUD功能实例”提供了一个完整的解决方案,用于快速开发基于Java的Web应用,特别是涉及数据库操作的CRUD(创建、读取、更新、删除...

    Extjs整合struts2.doc

    在整合 Struts2 时,你需要确保添加了必要的依赖库,例如 `struts2-json-plugin-2.1.8.jar`,这个插件允许 Struts2 将结果直接转换为 JSON 格式,便于与 ExtJS 通信。 配置方面,你需在 `web.xml` 文件中设置 ...

    ext+Json+dwr+spring+hibernate整合项目实例与资源

    我们一般会使用遵循MVC设计模式的Struts来规范程序结构,使用优秀的ORM组件Hibernate来简化数据库访问操作,使用系统黏合剂Spring来提高开发效率,使用异步访问的Ajax来提高用户体验。而今天我们要做的一个demo是一...

    Ext和SSH整合示例

    - **Spring和Struts2的整合配置**:需要在Spring的配置文件中指定Struts2的Action映射,以及实现Struts2的Action与Spring的Service层之间的整合。 整合ExtJS和SSH技术对于开发复杂的Web应用程序来说,可以大幅提升...

Global site tag (gtag.js) - Google Analytics