जेपीए में कई अनूठी बाधाएँ


84

क्या जेपीए के उपयोग को निर्दिष्ट करने का एक तरीका है कि स्तंभों के विभिन्न सेटों पर कई अद्वितीय बाधाएं होनी चाहिए?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    // Unique on username
    public String username;

    public String name;
    public String email;
}

मैंने हाइबरनेट विशिष्ट एनोटेशन देखा है, लेकिन मैं विक्रेता विशिष्ट समाधानों से बचने की कोशिश कर रहा हूं क्योंकि हम अभी भी हाइबरनेट और डेटान्यूक्लियस के बीच निर्णय ले रहे हैं।

जवाबों:


130

@Tableकी विशेषता uniqueConstraintsवास्तव में इन की एक सरणी स्वीकार करता है। आपका उदाहरण एक तत्व के साथ एक सरणी के लिए सिर्फ एक आशुलिपि है। इसके अलावा ऐसा लगेगा:

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})

जब भी अद्वितीय बाधा केवल एक क्षेत्र पर आधारित होती है, तो आप @Column(unique=true)उस कॉलम पर उपयोग कर सकते हैं ।


2
वर्तमान में मेरे पास यह एनोटेशन है, लेकिन ऐसा लगता है कि हाइबरनेट तालिका के लिए अनुक्रमणिका नहीं बना रहा है कि क्या तालिका पहले से मौजूद है (और यह अद्यतन करने के लिए सेट है) या यदि मैं तालिका को हटा देता हूं और हाइबरनेट स्वचालित रूप से इसे उत्पन्न करता हूं। क्या मैं कुछ भूल रहा हूँ?
केविन एम।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.