Hazırda bekletme, bir tamsayı alanı olan boş bir katıştırılmış nesne içeren bir nesneyi sürdürmeme izin vermiyor. Örneğin, ben benziyor Şey adlı bir sınıf varsa buHazırda bekletme, int alanı olan katıştırılmış bir nesnenin boş olmasına izin vermiyor mu?
@Entity
public class Thing {
@Id
public String id;
public Part part;
}
Bölüm bu
@Embeddable
public class Part {
public String a;
public int b;
}
sonra boş Parça nedenleri ile bir şey nesne devam çalışıyor gibi görünen bir gömülebilir sınıftır
Bir İstisna atmak için hazırda bekletme. Özellikle, bu kod
Thing th = new Thing();
th.id = "thing.1";
th.part = null;
session.saveOrUpdate(th);
nedenler bu istisna atmak için Hazırda
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.ace.moab.api.jobs.Thing.part
Benim tahminim Bölüm gömülü bir sınıftır ve böylece Part.a ve Part.b basitçe sütunlar çünkü bu oluyor ki Thing veritabanı tablosunda. Thing.part boş olduğundan, Hazırda bekletme, Part.a ve Part.b sütun değerlerini, satır öğesi için null olarak ayarlamak istiyor.1. Ancak, Part.b bir tamsayıdır ve Hazırda Bekletme, veritabanındaki tamsayı sütunlarının boş olmasına izin vermez. İstisna neden olan budur, değil mi?
Bu sorun için geçici çözümler arıyorum. Part.b'nin bir int yerine çalışmak yerine çalıştığını fark ettim, ama bunun sebebi ile sizi sıkmayacağım sebepler bizim için iyi bir seçenek değil. Teşekkürler!
"b" bir ilkel olduğunda int'niz nasıl olacak? –
NULL olan her şey için bir sarmalayıcı sınıfı (Tamsayı) kullanmalısınız ... – Amalgovinus