2015-05-26 4 views
13

'विषय' तालिकाजेपीए - @ कॉलम (अद्वितीय = सत्य) - वास्तव में 'अद्वितीय' विशेषता रखने का क्या मतलब है?

CREATE TABLE subject (id int PRIMARY KEY, name VARCHAR(255) **UNIQUE**) 

और संबद्ध मैप वस्तु मान लीजिए मैं कर रहा हूँ,

@Entity 
@Table(name="subject") 
public class SubjectDO { 
    @Id 
    @Column(name="id") 
    int id; 

    @Column(name="name", unique=true) 
    String name; 
    ... 
    // Getter-Setter methods 
} 

जब मैं वस्तु के साथ और बिना 'अद्वितीय = सच' परिभाषित 'नाम' नकली होने को बचाने की कोशिश, मुझे समान व्यवहार मिल रहा है (एक ही अपवाद।) और यह स्पष्ट है कि जेपीए कार्यान्वयन वास्तव में कुछ भी नहीं कर सकता है जब तक कि जांच के लिए डीबी तक पहुंच न जाए।

इसके लिए वास्तविक उपयोग केस क्या है?

(मैं यहाँ यह सोचते हैं रहा हूँ, अद्वितीय बाधा डाटाबेस स्तर पर भी परिभाषित किया गया है।)

उत्तर

29

@Column में unique केवल प्रयोग किया जाता है अगर तुम चलो अपने जेपीए प्रदाता आप के लिए डेटाबेस बनाने - इस पर अद्वितीय बाधा पैदा करेगा निर्दिष्ट कॉलम लेकिन अगर आपके पास पहले से डेटाबेस है, या आप इसे एक बार बनाते हैं, तो unique का कोई प्रभाव नहीं पड़ता है।

+0

धन्यवाद होता है! मैं रनटाइम के दौरान अपनी प्रासंगिकता खोजने की कोशिश कर रहा था .. क्या हमारे पास कोई ऑनलाइन संसाधन है जो डीडीएल विशिष्ट एनोटेशन के बारे में संक्षिप्त है? मैंने इसे खोजने की कोशिश की लेकिन इसे नहीं मिला .. –

+0

[जेपीए विशिष्टता] में सेक्शन 11.2 देखें (http://download.oracle.com/otndocs/jcp/persistence-2_1-edr2-spec/index.html), यह सभी एनोटेशन और उनके गुणों को सूचीबद्ध करता है जो स्कीमा जनरेशन प्रक्रिया में मनाए जाते हैं। –

+0

यह सहायक है .. धन्यवाद! –

9

column एनोटेशन में unique=true केवल DDL generation में इस्तेमाल किया जाएगा, यह runtime के दौरान किसी भी प्रभाव नहीं है, वास्तविक विशिष्टता की जाँच में database

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