我有Family
和Person
之間的雙向映射:併發插入到實體集合
@Entity class Family {
@OneToMany(mappedBy = "family", ...)
Set<Person> persons;
...
}
@Entity class Person {
@ManyToOne
Family family;
...
}
我的問題是,我可以同時添加和/或刪除的集合,它打破原子在更新的元素,如增加一個新人創建INSERT INTO Person ...
聲明不會與其他插入相沖突。 @Version
字段沒有幫助,因爲我沒有更新Family
實體作爲表中的行,只是邏輯上。
我應該怎麼做才能啓用集合的原子更新?我已經嘗試加載Family
和LockMode.PESSIMISTIC_WRITE
,它可以同步Family
本身的更新,但不允許第二級緩存讀取Family
。我寧願在數據庫中使用謂詞約束進行樂觀事務。
因此你必須使用交易! –