我将 eclipselink 与 jpa 一起使用,当我确实提交时,有时我会因缺少信息而出错,有一种方法可以获得额外的信息错误,可以帮助我快速找到错误的原因?
entityManager.getTransaction().commit();
我将 eclipselink 与 jpa 一起使用,当我确实提交时,有时我会因缺少信息而出错,有一种方法可以获得额外的信息错误,可以帮助我快速找到错误的原因?
entityManager.getTransaction().commit();
这是提交本身失败的典型情况。最常见的是当数据库中存在约束时,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 驱动程序时:)。