Create Table A (
ID varchar(8),
Primary Key(ID)
);
Create Table B (
ID varchar(8),
A_ID varchar(8),
Primary Key(ID),
Foreign Key(A_ID) References A(ID)
);
यह देखते हुए कि मैं ऊपर SQL कथन का उपयोग कर दो तालिकाओं बनाया है, और मैं कक्षा B
के लिए उनके लिए Entity
कक्षाएं बनाने के लिए, चाहते हैं, मैं इन सदस्य जिम्मेदार बताते हैं:जावा जेपीए @OneToMany को @ManyToOne का सहारा देने की आवश्यकता है?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = false)
@ManyToOne(optional = false)
private A AId;
वर्ग A
में, क्या मुझे कई से एक रिश्ते का सहारा देने की ज़रूरत है?
@Id
@Column(name = "ID", nullable = false, length = 8)
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "AId")
private List<B> BList; //<-- Is this attribute necessary?
यह एक आवश्यक या एक अच्छा विचार @ManyToOne
के लिए एक पारस्परिक @OneToMany
के लिए है? अगर मैं अब @OneToMany
एनोटेटेड विशेषता को छोड़ने का डिज़ाइन निर्णय लेता हूं, तो क्या वह मुझे आगे काटने के लिए वापस आ जाएगा?
+1 और @ पास्कल थिवेंट की जांच करें: इंगित करने के लिए अगर मुझे इसकी आवश्यकता हो तो मैं इसे बाद में जोड़ सकता हूं: यह मेरी मुख्य चिंता थी। – bguiz
मैं आमतौर पर जितना संभव हो सके unidirectional मैपिंग से बचने की कोशिश करता हूं। सिर्फ इसलिए कि डेटबेस में कुछ अलग तालिका में (किसी भी कारण से) के साथ मॉडलिंग किया गया है इसका मतलब यह नहीं है कि मेरे ऑब्जेक्ट-मॉडल को ऐसा करना है। उपर्युक्त उदाहरण में, एक वन -ऑन-मैपिंग यूनी-दिशात्मक समाधान के लिए पर्याप्त होगा (बेशक इसे डोमेन का पालन करना होगा)। – lostiniceland