我想保存两个具有以下关系的实体:
@Entity
public class Synonyme {
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name="ID", nullable = false)
private List<Term> terms = new ArrayList<>();
}
@Entity
public class Term {
private String word;
public static createTerm(String word, Synonyme newSyn, Long someothercriteria) {
Term term = new Term();
...
newSyn.addTerm(term);
}
}
我想像这样保存它们:
Synonyme newSyn= Synonyme.createSynonyme ();
entityManager.persist(newSyn);
for(String word : words) {
Term term = Term.createTerm(word, newSyn, 0L );
}
entityManager.flush();
这些代码在 Junit-Test 中运行良好(Junit-Test 使用 spring 的内存数据库),但如果我在真实数据库中使用它们,我得到以下异常:
Caused by: javax.persistence.PersistenceException: org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1
我不明白这个例外。这是什么意思,我能做什么?