मैं एक बहुत-से-एक रिश्ता है कि मैं व्यर्थ होने के लिए चाहते हैं:नहीं बना सकता @ManyToOne संबंध नल
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
दुर्भाग्य से, जेपीए मेरी डेटाबेस में स्तंभ के रूप में नहीं शून्य की स्थापना रखता है। क्या कोई इसे समझा सकता है? क्या यह काम करने का कोई तरीका है? ध्यान दें कि मैं जेबॉस 7, जेपीए 2.0 का उपयोग हाइबरनेट के साथ दृढ़ता प्रदाता और एक PostgreSQL 9.1 डेटाबेस के रूप में करता हूं।
संपादित:
मैं अपने इस समस्या का कारण मिल गया। जाहिरा तौर पर यह है की वजह से जिस तरह से करने के लिए मैं संदर्भित इकाई Customer
में प्राथमिक कुंजी परिभाषित:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
ऐसा लगता है कि प्राथमिक कुंजी के लिए @Column(columnDefinition="serial")
का उपयोग कर स्वचालित रूप से डेटाबेस में NOT NULL
करने के लिए इसे संदर्भित विदेशी कुंजी सेट करता है। क्या कॉलम प्रकार को serial
के रूप में निर्दिष्ट करते समय वास्तव में अपेक्षित व्यवहार है? क्या इस मामले में निरर्थक विदेशी कुंजी सक्षम करने के लिए कोई कामकाज है?
अग्रिम धन्यवाद।
वास्तव में एक समाधान मैं पर विचार किया है कि घोषित करने से उभरा। दुर्भाग्यवश यह डेटाबेस से आईडी पीढ़ी को सक्षम नहीं करता है, और यह एक कार्यक्षमता है जिसे मुझे मैन्युअल रूप से डेटा डालने पर आवश्यकता होती है (उदाहरण के लिए हाइबरनेट के import.sql का उपयोग करके)। सौभाग्य से मुझे लगता है कि मैं समाधान ढूंढने वाला हूं। मैं बस कुछ परीक्षण कर रहा हूं और यदि यह सफल है तो मैं समाधान पोस्ट करूंगा। आपकी सहायता के लिए धन्यवाद. – vcattin