通常,玩! commits the transaction after a request completes successfully。 在Play中手动提交事务的正确方法是什么?
void addPerson() {
Person p = new Person("John", "Doe");
p.save();
// TODO - commit the transaction
// Now p should have an ID
assert p.id != null;
usePersonIdForSomethingNasty(p.id);
}
答案 0 :(得分:5)
您可以通过调用JPA.em()来获取Hibernate EntityManager。然后,从那里,您可以访问事务(JPA.em()。getTransaction())。
如果您打算自己管理事务,则需要禁用Play!的事务处理(可以在方法或控制器上使用@NoTransaction注释来执行此操作)。否则,玩!无论如何都会尝试在请求结束时提交事务,如果你自己已经完成了,那将导致异常。
答案 1 :(得分:0)
你不需要做任何事情。请求完成后没有任何异常,将为您提交事务。
确保在您想要在交易结束时保留的所有实体上调用“保存”。