我该如何进行游戏!手动JPA交易?

时间:2011-11-17 14:59:26

标签: java jpa transactions playframework

通常,玩! 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);
}

2 个答案:

答案 0 :(得分:5)

您可以通过调用JPA.em()来获取Hibernate EntityManager。然后,从那里,您可以访问事务(JPA.em()。getTransaction())。

如果您打算自己管理事务,则需要禁用Play!的事务处理(可以在方法或控制器上使用@NoTransaction注释来执行此操作)。否则,玩!无论如何都会尝试在请求结束时提交事务,如果你自己已经完成了,那将导致异常。

答案 1 :(得分:0)

你不需要做任何事情。请求完成后没有任何异常,将为您提交事务。

确保在您想要在交易结束时保留的所有实体上调用“保存”。