实体管理器提交中的更多信息

时间:2013-04-08 18:59:59

标签: java jpa eclipselink

我正在使用eclipselink和jpa,当我确实提交时,我有错误,缺乏信息, 有一种方法可以帮助我快速找到错误的原因吗?

entityManager.getTransaction().commit();

1 个答案:

答案 0 :(得分: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驱动程序时:)。