在Junit中访问延迟加载的实体对象

时间:2012-04-30 09:21:40

标签: java spring jpa junit persistence

我正在尝试在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)

2 个答案:

答案 0 :(得分:6)

使用@Transactional注释您的集成测试类或方法。另见:10.3.5.4 Transaction management

答案 1 :(得分:1)

@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class TestAnything{
   ...
}