在向@OneToMany集合中添加项目时,Hibernate会更新实体的@Version属性 - 这是正常的吗?

时间:2011-07-05 11:28:26

标签: java hibernate jpa

我有两个具有1:n关系的Foo和Bar实体:

@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();

奇怪的是,当我调用entityManager.flush()时,foo.updateDate会更新,即使数据库中应该发生的唯一事情是对Bar的新行的INSERT - 即现有的Foo行不应该被修改。 Hibernate EntityManager的这种行为是正常/有意的吗?

0 个答案:

没有答案