鑑於以下兩個實體JPA:設置@JoinColumn(更新= false)來避免OptimisticLockException
@Entity
public class A {
@Version
protected int version;
String basicPropertey;
// getter and setter for basicProperty
}
@Entity
public class B {
@Version
protected int version;
@ManyToOne
private A a;
public B(A a) {
this.a = a}
}
//getter for a
}
兩個問題如下:
是否有實體A每增加版本號時間 實體B被合併到DB(請注意,沒有 CascadeType.MERGE定義在與A的關係上),並因此導致 可能出現OptimisticcLockException,當A與 不同的版本號?
如果是的話,這將有助於避免,如果我在 關係添加
@JoinColumn(updatable=false)
的 OptimisticLockException的可能性有多大?
我的情況是,實體B非常頻繁升級以及偶爾出現,但只有它的基本屬性(非關係),我在實體A.
我不確定什麼鎖定類型是默認鎖定類型,但是您是否嘗試用鎖定模式(「OPTIMISTIC」與「OPTIMISTIC_FORCE_INCREMENT」)進行擺弄? –
我認爲默認情況下它是OPTIMISTIC。我認爲這裏沒什麼關係,因爲當你明確地使用實體管理器的鎖API時,你只能指定鎖模式,而我不這樣做。我所擁有的只是@Version領域。 – Theo