java - 我如何提交 Play! JPA交易手动?

标签 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);
}

最佳答案

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

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

关于java - 我如何提交 Play! JPA交易手动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169279/

相关文章:

java - SQL和数据库

java - 你会使用 AOP 来跟踪积分吗?

jpa - 是否在一种方法中调用 persist()、flush() 和 refresh() 以正确的方式持久化实体?

c# - ADO.net:为什么连接池不使用已经打开的连接?

java - 是否可以在不使用 Spring 框架的情况下在每个 JUnit 测试用例之后回滚数据库?

java - 以下 Hibernate 自定义 ID 生成器代码是否正确?

java - 在 Eclipse 中,是否可以找到项目中所有采用某种参数类型的方法?

java - Spring 数据 JPA : Delete Optimistic Locking semantics

java - JPA。 Stackoverflow 上的级联合并

java - 为什么我要使用 java.lang.Class.cast