Hibernate不允許我使用整數字段來保存包含空嵌入對象的對象。舉例來說,如果我有一個東西叫類,看起來像這樣Hibernate不允許帶int字段的嵌入對象爲空?
@Entity
public class Thing {
@Id
public String id;
public Part part;
}
,其中部分是一個可嵌入類,它看起來像這樣
@Embeddable
public class Part {
public String a;
public int b;
}
然後試圖堅持用空部分原因一件事對象Hibernate拋出一個異常。特別是,該代碼
Thing th = new Thing();
th.id = "thing.1";
th.part = null;
session.saveOrUpdate(th);
導致Hibernate拋出此異常
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.ace.moab.api.jobs.Thing.part
我的猜測是,這是發生,因爲部分是嵌入類等Part.a和Part.b只是列在Thing數據庫表中。由於Thing.part爲null,Hibernate希望爲thing.1的行設置Part.a和Part.b列值爲null。然而,Part.b是一個整數,Hibernate將不允許數據庫中的整數列爲空。這是什麼導致異常,對不對?
所以我正在尋找解決這個問題的解決方法。我注意到讓Part.b成爲Integer而不是int似乎可行,但出於某些原因,我不會讓你感到厭煩,這對我們來說不是一個好的選擇。謝謝!
當'b'是一個原語時,你的int如何爲空? – 2015-04-03 17:51:48
你應該使用一個包裝類(Integer)來處理任何可以爲空的東西...... – Amalgovinus 2016-08-10 21:02:03