java - @Id के बिना हाइबरनेट/दृढ़ता




hibernate primary-key (4)

मेरे पास एक डेटाबेस दृश्य है जो परिणाम सेट उत्पन्न करता है जिसमें कोई वास्तविक प्राथमिक कुंजी नहीं है। मैं इस ऑब्जेक्ट को जावा ऑब्जेक्ट्स पर सेट करने के लिए हाइबरनेट / पर्सिस्टेंस का उपयोग करना चाहता हूं। बेशक, क्योंकि कोई पीके नहीं है, मैं @Id साथ किसी भी क्षेत्र को सजाने नहीं कर सकता।

तैनाती करते समय, हाइबरनेट लापता @Id बारे में शिकायत करता है। मैं इसके आसपास कैसे काम कर सकता हूं?


आप जांच सकते हैं कि क्या तर्कसंगत आईडी है और तदनुसार मैपिंग जानकारी प्रदान करें। हाइबरनेट परिभाषित प्राथमिक कुंजी के अस्तित्व के लिए डेटाबेस की जांच नहीं करेगा।


प्रत्येक इकाई के लिए, आपको निम्न में से कम से कम एक निर्दिष्ट करना होगा:

  • एक @Id
  • एकाधिक @ आईडी और एक @IdClass (एक समग्र प्राथमिक कुंजी के लिए)
  • @EmbeddedId

तो हो सकता है कि आप एक समग्र प्राथमिक कुंजी बना सकें, जिसमें एकाधिक फ़ील्ड हों?


यहां एक उदाहरण दिया गया है जिसमें "आईडी" कुंजी के रूप में 2 कुंजी हैं: https://gist.github.com/3796379


वही नहीं है जो आप पूछ रहे हैं, यहां एक छोटी सी चाल है जिसका मैं उपयोग करता हूं। प्रश्न "राउनम" का चयन करें और मॉडल में अपने आईडी कॉलम के रूप में "राउनम" को परिभाषित करें। यह प्रभावी ढंग से प्रत्येक पंक्ति को हाइबरनेट के लिए अद्वितीय बना देगा।





hibernate-annotations