我正在使用eclipselink和jpa,当我确实提交时,我有错误,缺乏信息, 有一种方法可以帮助我快速找到错误的原因吗?
entityManager.getTransaction().commit();
答案 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驱动程序时:)。