上网查了一下,说把lazy="false"即可,我改了,确实通过了
但是这样子必然会带来性能问题啊
因为lazy="false"的时候,load一个对象的时候,同时也把他的那些关联对象也load上来.
Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.huawei.etl.nx.db.entity.Etl3plan.etl3tasks - no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:191)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:183)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:48)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:134)
at com.huawei.etl.nx.operate.UpgradePlan.main(UpgradePlan.java:357)
其实hibernate在我重新load关联对象的时候,再次打开session不就OK吗?
其实还有一个方法,就是你在load出来对象的时候,调用:hibernate.intialize(object).以后你再调用这个对象的关联对象时,就不会有exception了。