鉴于以下两个实体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