【发布时间】:2011-07-03 20:08:50
【问题描述】:
我将 JPA 2 与 Hibernate 3.x 一起使用。我有两个实体对象 Foo 和 Bar,关系是这样的 -
@Entity
public class Foo{
@Id
private long id;
@OneToOne(cascade = CascadeType.ALL )
@JoinColumn(name = "bar")
private Bar bar;
@Version
private int version;
}
@Entity
public class Bar{
@Id
private long id;
private String name;
@Version
private int version;
}
现在我的问题是如果我从entityManager.find(...) 加载Foo 并更新Bar 的name 就像foo.getBar().setName("someAnotherName"); 并触发entityManager.merge(foo) 那么Hibernate 会触发Bar 的更新并增加@ 的版本仅限 987654329@。从对象的角度来看,它不会改变 Foo 的状态,也不应该增加 Foo 的版本吗?
现在我想从Bar 中删除version 属性,如果Bar 得到更新,Foo 的version 应该会增加。
我怎样才能做到这一点?
【问题讨论】:
标签: java hibernate version jpa-2.0 optimistic-locking