gpt4 book ai didi

java - 如何测试Hibernate Session是否打开?

转载 作者:行者123 更新时间:2023-12-01 06:23:12 25 4
gpt4 key购买 nike

我面临交易错误,例如:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: app.Parent.children, could not initialize proxy - no Session

这里是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 session 何时处于 Activity 状态,以便我可以检查它何时丢失以及原因。

谢谢!

最佳答案

我认为处理您的要求的最佳方法是在 child 属性上使用jpa validator @Size(min=3)

关于java - 如何测试Hibernate Session是否打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36218151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com