2012-08-14 22 views
23

मैं पोस्टग्रेएसक्यूएल 9 डेटाबेस के साथ सीएएम 2/हाइबरनेट का उपयोग कर रहा हूं। मैं निम्न तालिका हैएकाधिक कॉलम पर अद्वितीय प्रतिबंध

Active Band 
=========== 
active_band_id serial 
active_band_user text 
active_band_date timestamp 
active_band_process integer 

मैं एक बाधा सुनिश्चित करता है कि प्रत्येक नई प्रविष्टि active_band_user और active_band_date का एक अद्वितीय संयोजन है जोड़ना चाहते हैं।

संभावित रूप से प्रति सेकंड कई प्रयास किए जा सकते हैं इसलिए मुझे इसे यथासंभव कुशल होने की आवश्यकता है, क्या एक एसईएम/हाइबरनेट एनोटेशन मैं इकाई मैपिंग में उपयोग कर सकता हूं?

अग्रिम

+0

यह http://stackoverflow.com/questions/3211972/specifying-restrictions-unique-together-in नकल करने प्रकट होता है: लेकिन वहाँ एनोटेशन जो डेटाबेस के लिए इस तरह के एक बाधा है, तो स्वत: डेटाबेस सृजन प्रयोग किया जाता है उत्पन्न होगा है -बर्ननेट –

उत्तर

52

कोई हाइबरनेट एनोटेशन से पहले सम्मिलित/अपडेट विशिष्टता की जांच करता है धन्यवाद।

@Table(
    name="ACTIVE_BAND", 
    uniqueConstraints= 
     @UniqueConstraint(columnNames={"active_band_user", "active_band_date"}) 
) 
+0

मुझे नहीं लगता कि यह इस तरह का समर्थन करता है क्योंकि मुझे 'एनोटेशन एट्रिब्यूट टेबल के लिए मूल्य तालिका मिलती है। यूनिकिस में कुछ @ javax.persistence.UniqueConstraint एनोटेशन' होना चाहिए। क्या यह विधि SQL स्कीमा में बाधा उत्पन्न करती है? – DaveB

+0

हां यह समर्थन करता है। इसे यहां दस्तावेज किया गया है: http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html#uniqueConstraints%28%29 कुछ और गलत होना चाहिए। क्या javax.persistence.UniqueConstraint आयात किया गया है? –

+12

मुझे पता है कि यह साल पहले था, लेकिन सुनिश्चित करें कि आप 'javax.persistence.Table' का उपयोग नहीं कर रहे हैं' org.hibernate.annotations.Table'। हाइबरनेट की '@ टेबल' में' अद्वितीय कॉन्स्ट्रेनेंट्स 'फ़ील्ड नहीं है। – Patrick

संबंधित मुद्दे