मैं इकाई वर्ग के साथ एक बहुत ही अजीब व्यवहार देख रहा हूं और जेपीए (हाइबरनेट इकाई प्रबंधक 3.3.1.ga) के साथ इस वर्ग की एक वस्तु लोड कर रहा हूं। कक्षा में एक (एम्बेडेड) फ़ील्ड है, जिसे घोषणा में शुरू किया गया है। क्षेत्र का सेटटर एक शून्य जांच लागू करता है (यानी एक शून्य मान सेट होने पर अपवाद फेंक देगा)।अजीब जेपीए व्यवहार, प्रारंभिक फ़ील्ड शून्य
...
@Entity
public class Participant extends BaseEntity implements Comparable<Participant> {
...
@Embedded
private AmsData amsData = new AmsData();
public void setAmsData(AmsData amsData) {
Checks.verifyArgNotNull(amsData, "amsdata");
this.amsData = amsData;
}
...
}
जब मैं जेपीए के साथ इस वस्तु मिलता है, फ़ील्ड रिक्त है, अगर वहाँ एम्बेडेड ऑब्जेक्ट में निर्दिष्ट क्षेत्रों के लिए DB में कोई डाटा नहीं है।
...
public class ParticipantJpaDao implements ParticipantDao {
@PersistenceContext
private EntityManager em;
@Override
public Participant getParticipant(Long id) {
return em.find(Participant.class, id);
}
...
}
मैं मैदान पर एक watchpoint साथ प्रक्रिया डिबग (को रोकने चाहिए जब क्षेत्र पहुँचा या संशोधित किया गया है), और मैं एक संशोधन जब क्षेत्र आरंभ नहीं हो जाता देखते हैं, लेकिन जब मैं खोजने के कॉल से परिणाम प्राप्त , क्षेत्र शून्य है।
क्या कोई समझा सकता है, ऐसा क्यों है? मैं कैसे सुनिश्चित कर सकता हूं कि फ़ील्ड शून्य नहीं है, जब डीबी में एम्बेडेड ऑब्जेक्ट के फ़ील्ड के लिए कोई डेटा नहीं है (इसके अलावा मैन्युअल रूप से कॉल कॉल के बाद इसे सेट करने के अलावा)।
इस हो सकता है? –
मैं आलसी लोडिंग का उपयोग करता हूं, लेकिन यह एक एम्बेडेड फ़ील्ड है, इसलिए उसी तालिका में संग्रहीत किया जाता है। क्या उत्सुकता से इसे लाने के लिए टिप्पणी करने की संभावना है? – Dominik
संबंधित हाइबरनेट समस्या (हटाए गए उत्तर से लिया गया): [एचएचएच -7610: सभी कॉलम न्यूल होने पर @Embedded फ़ील्ड को सेट करने के लिए विकल्प] (https://hibernate.atlassian.net/browse/HHH-7610) – sleske