मैंने @Embedded
एनोटेशन को छोड़कर कोशिश की है और अभी भी फ़ील्ड को तालिका में एम्बेड किया गया है। मुझे कुछ भी नहीं मिला जो कहता है कि @Embedded
एनोटेशन वैकल्पिक है।क्या जेपीए @ एम्बेडेड एनोटेशन अनिवार्य है?
क्या यह या है यह वैकल्पिक नहीं है?
निम्नलिखित कोड
@Embeddable
public class Address {
String city;
String street;
}
@Entity
public class Person {
String name;
@Embedded // it seems that it works even if this annotation is missing!?
Address address;
}
हमेशा एक ही मेज उत्पन्न
person
name
city
street
भले ही मैं नहीं@Embedded
निर्दिष्ट करते हैं।
मेरे विन्यास:
- JBoss ईएपी 6.4.0
- हाइबरनेट-जेपीए-2.0-api-1.0.1.Final-redhat-3.jar
जेपीए विनिर्देश कहता है:
http://docs.oracle.com/javaee/7/api/javax/persistence/Embedded.html
@javax.persistence.Embedded
एक लगातार क्षेत्र या एक इकाई जिसका मान किसी एम्बेड वर्ग का एक उदाहरण है की संपत्ति निर्दिष्ट करता है। एम्बेड करने योग्य वर्ग को एम्बेड करने योग्य के रूप में एनोटेट किया जाना चाहिए।
http://docs.oracle.com/javaee/7/api/javax/persistence/Embeddable.html
@javax.persistence.Embeddable
एक वर्ग जिसका उदाहरणों एक स्वामित्व इकाई के आंतरिक भाग के रूप में जमा हो जाती है और संस्था की पहचान का हिस्सा निर्दिष्ट करता है। एम्बेडेड ऑब्जेक्ट के प्रत्येक निरंतर गुण या फ़ील्ड को इकाई के लिए डेटाबेस तालिका में मैप किया जाता है।
आपको इसे पहले से ही मिल गया है। विनिर्देशन में @ एम्बेडेड के लिए आवश्यकता नहीं है। तो मुझे लगता है कि यह कार्यान्वयन का एक वंशज है। यह देखना दिलचस्प होगा कि OpenJPA और EclipseLink वही करते हैं या नहीं। – kromit
जैसा कि क्रोमेट कहते हैं, विक्रेता को नीचे। जिसे मैं उपयोग करता हूं (डेटान्यूक्लियस जेपीए) एंबेडेबल को 'इस वर्ग के उदाहरण हमेशा एम्बेडेड' के रूप में व्याख्या करता है। दूसरी तरफ जेडीओ स्पेक में स्पष्ट एनोटेशन/एक्सएमएल है जो उपयोगकर्ता को 'इस वर्ग के उदाहरण हमेशा एम्बेडेड' करने में मदद करने के लिए अनुमति देता है और 'इस वर्ग के उदाहरण केवल तभी एम्बेडेड होते हैं जब फ़ील्ड को इस तरह चिह्नित किया जाता है'। –
सामान्य रूप से, एपीआई जितना संभव हो सके कॉन्फ़िगरेशन पर जितना अधिक सम्मेलन बनने की कोशिश करता है, इसलिए एनोटेशन के कई एनोटेशन या पैरामीटर वास्तव में वैकल्पिक होते हैं जब इसके लिए एक अच्छी तरह परिभाषित डिफ़ॉल्ट होता है। यह एक प्रमुख उदाहरण है; यदि कोई वर्ग एम्बेड करने योग्य है, तो यह एक बहुत ही सुरक्षित धारणा है कि जब इसे किसी इकाई में उपयोग किया जाता है, तो इसे एम्बेडेड के रूप में माना जाना चाहिए। पुश को कार्यान्वित करने के लिए आता है, यह देखने के लिए डेटाबेस मेटा डेटा जांच सकता है कि वास्तव में यह मामला है या नहीं। – Gimby