【发布时间】:2012-10-02 11:03:30
【问题描述】:
我正在尝试更新 Java 实体的集合,但 Hibernate 执行批量更新的顺序会导致违反约束的异常。 我会用下面的例子来说明情况。
实体学生 内部编号 字符串名称 字符串deskID
规则:2名学生不能同桌
第一次交易:插入 2 个学生如下 学生 1 编号:1 名称:ABC DeskId:D1
学生 2 编号:2 名称:DEF DeskId:D2
在此之后,我决定更新两个学生实体以交换他们的课桌 我将一组更新的学生实体发送到休眠更新 学生 1 编号:1 名称:ABC DeskId:D2
学生 2 编号:2 名称:DEF DeskId:D1
但这会导致违反约束异常,因为我认为更新一次只发生一条记录。
我正在使用 JTA 实体管理器来管理事务。我要更新的代码如下所示
updateMultiple(Collection<Student> updatedStudents)
for (final Student student: updatedStudents)
{
final Student st= this.entityManager.getReference(Student.class, Student.getId());
student.merge(st);
}
this.entityManager.flush();
return breakClauseDtos;
【问题讨论】:
标签: hibernate jakarta-ee jta hibernate-entitymanager batch-updates