मेरे पास मेरे एप्लिकेशन की वेब यूआई परत में एक जेपीए इकाई उदाहरण है। मैं किसी भी समय जानना चाहूंगा कि यह इकाई डेटाबेस में पहले से ही जारी है या यदि यह केवल उपयोगकर्ता सत्र में मौजूद है।कैसे पता चलेगा कि एक अलग जेपीए इकाई पहले से ही जारी है या नहीं?
यह व्यापार परत में होगा, मैं entitymanager.contains (इकाई) विधि का उपयोग करूंगा, लेकिन मेरी यूआई परत में मुझे लगता है कि मुझे एक अतिरिक्त विशेषता की आवश्यकता है जो इंगित करता है कि इकाई को सहेजा गया है या नहीं। इसे कैसे कार्यान्वित करें? मैं पल के लिए विकल्प निम्नलिखित पर विचार कर रहा हूँ:
- डेटाबेस द्वारा निर्धारित एक डिफ़ॉल्ट मान के साथ एक जेपीए विशेषता है, लेकिन हर अद्यतन के बाद एक नया पढ़ने के लिए मजबूर हैं?
- एक गैर जेपीए विशेषता मैन्युअल रूप से मेरे कोड में सेट या स्वचालित रूप से जेपीए द्वारा सेट?
कोई सलाह/अन्य सुझाव?
मैं जेबए 1 का उपयोग हाइबरनेट 3.2 कार्यान्वयन के साथ कर रहा हूं और मानक के साथ छड़ी पसंद करूंगा।
बिल्कुल, मैं अगर मेरी इकाई नया है जानना चाहता हूँ: अब, अगर आप जानना चाहते हैं, तो एक इकाई नई है, क्या इस बारे में (अर्थात किसी भी लगातार पहचान नहीं है)।मैं डेटाबेस में डिफ़ॉल्ट मान सेट के साथ किसी अन्य फ़ील्ड का उपयोग करना पसंद करूंगा क्योंकि मैं प्राथमिक कुंजी के लिए जेपीए जेनरेटेड वैल्यू रणनीति का उपयोग नहीं कर रहा हूं (मैं अपने आप को क्रॉस डेटाबेस विक्रेता/जेपीए कार्यान्वयन/क्लस्टरिंग संगतता के लिए यूयूआईडी के साथ प्राथमिक कुंजी सेट कर रहा हूं)। – snowflake
@nownowflake समस्या यह है कि जेपीए गैर पीके विशेषताओं के लिए डेटाबेस जेनरेटेड मानों का समर्थन नहीं करता है, इसलिए आपको एक जेपीए प्रदाता एक्सटेंशन (जैसे '@ org.hibernate.annotations.Generated') का उपयोग करना होगा या लगातार बने रहने के बाद अपनी इकाइयों को रीफ्रेश करना होगा , जो बदसूरत है। मुझे आश्चर्य है कि '@ जेनरेटेड वैल्यू' का उपयोग करना बेहतर विकल्प नहीं होगा। –
आपकी टिप्पणी के लिए धन्यवाद। आप सही हैं यह बदसूरत है, मैं अपने डीएओ द्वारा और एक वैकल्पिक सेट के रूप में उपयोग करना पसंद करूंगा। – snowflake