2010-05-31 9 views
5

में अद्वितीय बाधा नहीं बनाई गई है मैंने निम्नलिखित इकाई बीन बनाई है, और दो कॉलम अद्वितीय होने के रूप में निर्दिष्ट किया है। अब मेरी समस्या यह है कि तालिका अद्वितीय बाधा के बिना बनाई गई है, और लॉग में कोई त्रुटि नहीं है। क्या किसी के पास कोई विचार है?जेपीए

@Entity 
@Table(name = "cm_blockList", uniqueConstraints = @UniqueConstraint(columnNames = {"terminal", "blockType"})) 
public class BlockList { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 
    @ManyToOne(cascade = CascadeType.PERSIST) 
    @JoinColumn(name="terminal") 
    private Terminal terminal; 
    @Enumerated(EnumType.STRING) 
    private BlockType blockType; 
    private String regEx; 
} 
+0

हमारे सर्वर, JBoss है इस प्रकार जेपीए प्रदाता हाइबरनेट मेरा मानना ​​है कि है। – homaxto

उत्तर

5

ठीक है, मुझे डिज़ाइन बनाने का एक और तरीका मिला। अधिक क्योंकि डिजाइन आसपास के काम से विकसित हुआ।
मैंने हालांकि एक सहयोगी से सुना है, जिसमें एक ही समस्या थी, कि अद्वितीय डेटाबेस केवल हाइबरनेट द्वारा बनाया गया है (जब हम जेबॉस 4.3 चला रहे हैं) जब संपूर्ण डेटाबेस बनाया जाता है। जब आप किसी मौजूदा डेटाबेस में कोई नई तालिका बनाते हैं तो यह काम नहीं करेगा।
तो persistence.xml में यह काम करने के लिए hibernate.hbm2ddl.autocreate-drop पर सेट करना आवश्यक है। हालांकि मैं इसकी पुष्टि नहीं कर सकता। भी

ALTER TABLE cm_blockList ADD CONSTRAINT cm_blockList_unq UNIQUE (terminal); 

देखें:

+0

आपके अवलोकन के लिए homaxto सही है। मुझे एक ही स्थिति का सामना करना पड़ा और निर्माण-निर्माण सेट होने पर बाधाएं काम करती हैं। –

+0

मुझे एक ही समस्या है, और पूरे डेटाबेस को फिर से बनाना, काम किया – greuze

0

कोई वास्तविक जवाब से अधिक सुझाव ...

  • आप जो जेपीए प्रदाता (और संस्करण) आप इस तरह के सवालों के लिए उपयोग कर रहे हैं स्पष्ट करना चाहिए।

  • मुझे पता है कि आपका कॉलम ManyToOne एसोसिएशन का हिस्सा है, यह आपके "जेपीए प्रदाता द्वारा अच्छी तरह से संभाला जा सकता है" विशेष "मामला हो सकता है। अच्छी तरह से संभाला नहीं, मेरा मतलब है बग। मैं किसी मौजूदा मुद्दे के लिए समस्या ट्रैकर की जांच करूंगा (और शायद एक नया निर्माण कर सकता हूं, आपका केस जेपीए अनुपालन करता है)।

2

आप न सब कुछ छोड़ने के लिए है, बस इस विशेष तालिका आप के लिए

1

अद्वितीय सूचकांक बनाने के लिए आप अद्वितीय बाधा चाहते हैं चाहते हैं ड्रॉप, आप एसक्यूएल द्वारा यह करना चाहिए : https://stackoverflow.com/a/3498242/1244488

0

मुझे भी एक ही समस्या का सामना करना पड़ा, लेकिन मैपिंग फ़ाइल में unique-key="UK1_test" जोड़कर ठीक काम किया।

<property name="hibernate.hbm2ddl.auto">create</property> मैपिंग फ़ाइल में unique-key="UK1_test" unique="true" साथ बनाया alter table employee add constraint UK1_test unique (addrId)