java - Trouble creating unique table of Strings when persisting List<String> -
मान लीजिए मेरे पास एक इकाई है:
@ एंटीटी सार्वजनिक वर्ग एनईएनटीटीआई सीरियलज़ेबल लागू करता है {@ElementCollection निजी सूची & lt; स्ट्रिंग & gt; तार = नया वेक्टर & lt; स्ट्रिंग & gt; (); // अन्य सामान}
मैं EclipseLink (JPA 2.0) का उपयोग कर रहा हूँ।
इस सूची में दिए गए स्ट्रिंग्स में कई एएनएनटीटी ऑब्जेक्ट्स में समान मान हो सकते हैं। इसका अर्थ यह है कि कई एंटेन्टिटी ऑब्जेक्ट समान स्ट्रिंग्स का संदर्भ दे सकते हैं।
समस्या यह है कि @ElementCollection से डिफ़ॉल्ट मैपिंग स्ट्रिंग तालिका (ANENTITY_STRINGS) में कई डुप्लिकेट प्रदान करता है। मैं इसे कैसे मैप कर सकता हूं ताकि जब मैं तारों की सूची को सहेजूं, तो मूल्यों को विशिष्ट रूप से बचाया जाएगा ताकि मेरे पास डुप्लिकेट स्ट्रिंग्स की एक विशाल तालिका न हो?
मुझे जोड़ना चाहिए कि मेरे पास है "प्लेसहोल्डर" क्लासेस का उपयोग करने की कोशिश की, जिसका एक एकल सदस्य स्ट्रिंग है। दुर्भाग्य से, ऐसा करने से संबंधित तालिका में डेटा पूरी तरह से अपठनीय छोड़ देता है, मुझे यकीन है कि यह एक ब्लॉब या लॉब के रूप में सहेज रहा है। उदाहरण के लिए, उदाहरण के लिए, मैंने इस तरह से कुछ किया, सूची का उपयोग करने के बजाय:
@ElementCollection @ManyToMany निजी सूची & lt; StringWrapperClass & gt; तार = नया वेक्टर & lt; स्ट्रिंगवेपरक्लास & gt; ();
और फिर मेरी इकाई कुछ ऐसा दिखती है:
<पूर्व> @ एंटीटी सार्वजनिक वर्ग StringWrapperClass Serializable {निजी स्ट्रिंग स्ट्रिंग लागू करता है; // अन्य सामान, गेटर्स, सेटर्स, आईडी, आदि}
लेकिन जैसा कि मैंने कहा, जो ANENTITY_STRINGS में बस बाइट्स डालता है। मैं यह नहीं सोच सकता कि यह करने का एक "सही" तरीका है।
तो, आप चाहते हैं एक मैपिंग बनाएं जहां प्रत्येक AnEntity
में कई स्ट्रिंग हैं, और प्रत्येक स्ट्रिंग कई एंटेन्टिटी से संबंधित हो सकती है। इसके बाद आपको @ManyToMany
का उपयोग करना चाहिए, क्योंकि यह कई-से-कई संबंध हैं।
Comments
Post a Comment