说明:处理过程没有考虑其他分支情况,直接从解决问题入手。
异常描述:ERROR 2010-11-24 10:11:42,780 LazyInitializationException:<init> - failed、
to lazily initialize a collection of role: xxx.xx.xxx, no session or
session was closed
解决方法:在模型对应的*.hbm.xml中找到对应的集合字段,标记lazy="true"。
备注说明:hibernate默认java的复合类型(对象、接口、集合)的lazy为false,目的是为了
提高性能,当读取模型中的复合类型时再从数据库中进行查询。
当lazy为false时,直接引用模型中的复合类型,会得到null值,因而会引发异常。
一般是获取模型后,直接将对象保存后(如SESSION)在其他位置引用(例如页面,
另外的action,viewer)引发此异常。
异常描述:ERROR 2010-11-24 10:34:33,128
org.springframework.dao.InvalidDataAccessApiUsageException: object
references an unsaved transient instance - save the transient instance
before merging: xxx.xxx.xxx; nested exception is
org.hibernate.TransientObjectException: object references an unsaved
transient instance - save the transient instance before merging:
xxx.xxx.xxx
解决方法:在模型对应的*.hbm.xml中找到对应的集合字段,标记cascade="save-
update"(cascade="all"也行),如果持久化对象不是update操作,换成
save(Object entity)方法来操作
备注说明:多表联合操作中没有分析清楚对象与对象之间的维护关系时容易发生此异常。多表
联系操作从包含集合类字段的一端去维护操作。
异常描述:java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer
解决方法:删除cglib-2.1.3.jar。
备注说明:cglib-2.1.3.jar 与 cglib-nodep-2.1_3.jar 冲突
异常描述:ERROR 2010-11-24 10:11:42,780 LazyInitializationException:<init> - failed、
to lazily initialize a collection of role: xxx.xx.xxx, no session or
session was closed
解决方法:在模型对应的*.hbm.xml中找到对应的集合字段,标记lazy="true"。
备注说明:hibernate默认java的复合类型(对象、接口、集合)的lazy为false,目的是为了
提高性能,当读取模型中的复合类型时再从数据库中进行查询。
当lazy为false时,直接引用模型中的复合类型,会得到null值,因而会引发异常。
一般是获取模型后,直接将对象保存后(如SESSION)在其他位置引用(例如页面,
另外的action,viewer)引发此异常。
异常描述:ERROR 2010-11-24 10:34:33,128
org.springframework.dao.InvalidDataAccessApiUsageException: object
references an unsaved transient instance - save the transient instance
before merging: xxx.xxx.xxx; nested exception is
org.hibernate.TransientObjectException: object references an unsaved
transient instance - save the transient instance before merging:
xxx.xxx.xxx
解决方法:在模型对应的*.hbm.xml中找到对应的集合字段,标记cascade="save-
update"(cascade="all"也行),如果持久化对象不是update操作,换成
save(Object entity)方法来操作
备注说明:多表联合操作中没有分析清楚对象与对象之间的维护关系时容易发生此异常。多表
联系操作从包含集合类字段的一端去维护操作。
异常描述:java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer
解决方法:删除cglib-2.1.3.jar。
备注说明:cglib-2.1.3.jar 与 cglib-nodep-2.1_3.jar 冲突