我有2个实体类:
包含与子项的1-1关系的父项(没有用于乐观锁定的@Version):
@Entity
public class Poo {
...
@OneToOne(cascade = ALL, fetch = FetchType.LAZY, mappedBy = "mapping_column")
private Foo foo;
...
}
这里是子类(具有乐观锁定的@Version):
@Entity
public class Foo {
...
@Version
@Column(name="optlock")
private Integer optLock;
...
}
更新父实体的某些字段时,在另一个进程更改了子实体之间,因此按预期增加了optlock。
但这会产生问题,因为它会阻止父实体的更新,即使更新没有触及子项:
...
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
...
如果没有更改子实体,有更多直接的方法可以防止检查版本控制吗?因为最终DB中没有更新。