【问题标题】:Hibernate update issue休眠更新问题
【发布时间】:2010-03-02 09:19:14
【问题描述】:

我的程序中有一个奇怪的休眠行为。 我有两个具有单对关系的类:好和价格:

    @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 日志中看到这样的查询:

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

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

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

【问题讨论】:

    标签: java sql hibernate


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 2011-06-20
      • 2017-11-19
      • 2011-10-06
      • 1970-01-01
      • 2012-09-17
      相关资源
      最近更新 更多