[英]How to test if Hibernate Session is open?
我遇到交易錯誤,例如:
org.hibernate.LazyInitializationException:無法延遲初始化角色集合:app.Parent.children,無法初始化代理-沒有會話
在此處parent.getChildren().size()
。
但是我在@Service
方法上確實有@Transactional
:
createFactory()
進行1次交易以創建工廠並提供給實體管理器 create()
進行1次交易以創建實體 @Path("api/parents")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Controller
public class ParentResource {
@Autowired
private ParentService parentService;
@POST
public Parent create(Parent parent) {
ParentFactory parentFactory = parentService.createFactory(parent);
return parentService.create(parent);
}
}
@Service
public class ParentService {
@PersistenceContext
private EntityManager em;
@Transactional
public ParentFactory createFactory(Parent parent) {
return new ParentFactory(parent, em);
}
@Transactional
public Parent create(ParentFactory parentFactory) {
return parentFactory.create();
}
}
// No Transactional annotation
public class ParentFactory {
private Parent parent;
private EntityManager em;
public ParentFactory(Parent parent, EntityManager em) {
this.parent = parent;
this.em = em;
}
public parent create() {
if(parent.getChildren().size() < 3) { // Exception here
em.persist(this.parent);
}
}
}
我希望能夠測試我的Hibernate會話何時存活,以便我可以檢查它何時丟失以及為什么丟失。
謝謝 !
我認為處理您要求的最佳方法是在children屬性上使用jpa驗證程序@Size(min = 3)
嘗試使用session.getTransaction()。isActive()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.