【发布时间】:2012-03-13 11:36:39
【问题描述】:
在我的代码中,我在同一个事务中删除并保留对象:
for (final GZAFixInterval actStat : actualStatus) {
...
em.remove(actStat);
...
}
for (final Interval newInterval : newIntervals) {
final GZAFixInterval newGZAfi = new GZAFixInterval();
... setters etc
em.persist(newGZAfi);
}
em.flush();
有时我会收到 PSQLException:错误:冲突的键值违反了排除约束“constraint_name”。这是一个特殊的排除约束。
发生约束错误的情况如下:
- em.remove(objectA)
- em.persist(objectB)
objectA 和 objectB 必须相互排除在表中存在(这是约束)。在插入 objectB 之前,可能 objectA 并未真正从数据库中删除。
问题是:如果是这种情况,如何强制 JPA 在插入 objectB 之前真正删除 objectA?同花顺解决了吗?
目前我正在使用延迟约束,但欢迎任何想法。
【问题讨论】:
标签: java jpa eclipselink