2010-03-02 116 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)