我的程序中有一个奇怪的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并在将其还原后,是否可以避免这种情况?
答案 0 :(得分:0)
如果GOOD_ID
不能为空(我假设),您应该声明:
@JoinColumn(name="GOOD_ID", nullable = false)