【发布时间】:2012-03-16 05:00:14
【问题描述】:
在 J2SE 应用程序中使用 JPA (OpenJPA) 我正在尝试使用条目列表的内容更新表:添加新条目或将现有条目替换为列表中的内容(如果存在)。
1) 最好的方法是什么?
为此,我想在同一个事务中执行数百个合并...(列表中的某些条目可能具有相同的 ID)
使用 HSQLDB 时它似乎工作正常,但是当使用 MySQL 作为数据库时,我得到了这个异常: org.apache.openjpa.persistence.EntityExistsException:重复条目
2) 知道为什么吗?
代码很简单,如下所示:
EntityManager em = emfactory.createEntityManager();
em.getTransaction().begin();
// update messages
for (Message msg : messages) {
Entry e=new Entry(msg.getId(), msg.getText(),msg.getDate());
em.merge(e);
}
em.getTransaction().commit();
em.close();
谢谢
【问题讨论】:
-
我猜异常来自提交。如果是这样,您可以尝试进行故障排除并找到导致问题的味精。在合并下的 for 中移动提交。用 try/catch 包围提交,并在 catch 中的某处设置断点。另外,您的 Message 实体中的唯一字段是什么?
标签: mysql jpa transactions merge