Version property of Parent isn't incrementing if I update child
I'm using JPA 2 with Hibernate 3.x. I have two Entity objects Foo and Bar and the relation is like this -
@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;
}
Now my problem is If I loaded Foo
from entityManager.find(...)
and updated name
of Bar
like foo.getBar().setName("someAnotherName");
and fire entityManager.merge(foo)
then Hibernate fires a update on Bar
and increments a version for Bar
only. From the object perspective doesn't its a change of the sate of Foo as well and shouldn't it increment the version of Foo as well?
version
property from Bar
and version
of Foo
should get incremented if Bar
get开发者_StackOverflow中文版s updated.
How can I achieve this?In your case not Foo, but entity on which it references has been changed, so there is no need in version increment.
@Version adds optimistic locking capability to an entity and it shouldn't be used as a change counter. The main purpose of this annotation is detecting of conflicting updates, so think twice before doing that.
The only way to override this behaviour is to use [OPTIMISTIC | PESSIMISTIC]_FORCE_INCREMENT
精彩评论