2

我将 eclipselink 与 jpa 一起使用,当我确实提交时,有时我会因缺少信息而出错,有一种方法可以获得额外的信息错误,可以帮助我快速找到错误的原因?

entityManager.getTransaction().commit();
4

1 回答 1

1

这是提交本身失败的典型情况。最常见的是当数据库中存在约束时,JPA 层不知道什么。例如,在您的数据库表列上,您可能有一个 JPA 中未定义的唯一约束,在这种情况下,提交将引发错误。所以我的建议是检查违反数据库约束的可能性。此外,您应该了解javax.transaction.RollbackException您的交易:

try {
  entityManager.getTransaction().begin();
  ...
  entityManager.getTransaction().commit();
} catch (RollbackException e1) {
  System.out.println(e1.getMessage());
  System.out.println(e1.getCause());
  throw ...;
}

e1.getCause()应该包含违反的约束。至少在使用文明的数据库和 JDBC 驱动程序时:)。

于 2013-04-08T19:43:54.683 回答