Hibernate обновляет свойство @Version объекта при добавлении элементов в коллекцию @OneToMany - это нормально? - PullRequest
1 голос
/ 05 июля 2011

У меня есть две сущности 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 нормальным / преднамеренным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...