У меня есть две сущности 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<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 ...
}
Теперь я добавляю Bar к существующей Foo:
Foo foo = entityManager.find(Foo.class, 1);
Bar bar = new Bar();
entityManager.persist(bar);
foo.getBars().add(bar);
entityManager.flush();
Странная вещьчто foo.updateDate обновляется, когда я вызываю entityManager.flush (), хотя единственное, что должно произойти в базе данных, - это INSERT новой строки в Bar, то есть существующая строка Foo не должна изменяться.Является ли это поведение Hibernate EntityManager нормальным / преднамеренным?