2010-03-02 151 views
0

我的程序中有一个奇怪的Hibernate行为。 我有两个班,一对多的关系:好,价格:休眠更新问题

@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; 
    ...} 

当我更新包含的商品我看到休眠SQL日志这样的查询hierarchial结构:

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

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

为什么hibernate将此字段设置为null,并且在它将其恢复回去之后,是否可以避免这种情况?

回答

0

如果GOOD_ID不能为空(我假设),你应该声明它这样:

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