Hibernate更新问题

时间:2010-03-02 09:19:15

标签: java sql hibernate

我的程序中有一个奇怪的Hibernate行为。 我有两个关于onetomany关系的课程:好和价格:

    @Entity
    @Table(name="GOODS")
    public class Good {

    ....
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="GOOD_ID")
    private Set<Price> prices = new HashSet<Price>();
    ...}



    @Entity
    @Table(name="PRICES")
    public class AuctionPrice {

    ..

    @Column(name="PRICE")
    private double price;
    ...}

当我更新包含商品的层次结构时,我在hibernate sql log中看到了这样的查询:

update PRICES set GOOD_ID=null where GOOD_ID=?
...
update PRICES set GOOD_ID=? where id=?

所有价格(当价格没有实际变化时)。

为什么hibernate将此字段设置为null并在将其还原后,是否可以避免这种情况?

1 个答案:

答案 0 :(得分:0)

如果GOOD_ID不能为空(我假设),您应该声明:

@JoinColumn(name="GOOD_ID", nullable = false)