我正在尝试在Junit中测试实体值,该实体与懒惰获取类型具有多对多关系。
当我尝试在Junit中扩展它时,我收到以下错误。 如果我的理解错误,请高亮一点,我只需要在Junit中打开会话并加载此对象。
严重:未能懒惰地初始化角色集合:com.example.stock.model.Stock.locations,没有关闭会话或会话 org.hibernate.LazyInitializationException:无法懒惰地初始化角色集合:com.example.stock.model.Stock.locations,没有会话或会话被关闭 at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) 在org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86) 在org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:249) 在com.example.common.StockManytoManyTest.testGetStock(StockManytoManyTest.java:53) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
答案 0 :(得分:6)
使用@Transactional
注释您的集成测试类或方法。另见:10.3.5.4 Transaction management。
答案 1 :(得分:1)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) @Transactional public class TestAnything{ ... }