Java Hibernate在向@OneToMany集合添加项时更新实体的@Version属性-这正常吗?
我有两个Foo和Bar实体,它们具有1:n关系:Java Hibernate在向@OneToMany集合添加项时更新实体的@Version属性-这正常吗?,java,hibernate,jpa,Java,Hibernate,Jpa,我有两个Foo和Bar实体,它们具有1:n关系: @Entity public class Foo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "foo_id") Integer id; @OneToMany(fetch = FetchType.LAZY) @JoinColumn(name = "foo_id") private Set
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "foo_id")
Integer id;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "foo_id")
private Set<Bar> bars;
@NotNull
@Version
@Temporal(TemporalType.TIMESTAMP)
@Column(name="update_date", nullable=false)
private Date updateDate;
// getters and setters ...
}
@Entity
public class Bar{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bar_id")
Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "foo_id")
private Foo foo;
// getters and setters ...
}
奇怪的是,当我调用entityManager.flush()时,foo.updateDate会被更新,即使数据库中唯一应该发生的事情是向Bar插入新行,也就是说,不应该修改现有的foo行。
Hibernate EntityManager的这种行为是正常的/故意的吗?请参见“谢谢”-我确实尝试过搜索,我发誓!-)看,谢谢-我确实尝试过搜索,我发誓!-)
Foo foo = entityManager.find(Foo.class, 1);
Bar bar = new Bar();
entityManager.persist(bar);
foo.getBars().add(bar);
entityManager.flush();