बनाता है मैं MVC, Roo वसंत और हाइबरनेट करने के लिए नए हूँ। एम संबंध:स्प्रिंग रू, हाइबरनेट, कई संबंध के लिए एक अतिरिक्त तालिका
मैं 1 के साथ दो तालिकाएं बनाने के लिए कोशिश कर रहा हूँ।
उदाहरण के लिए, मैं दो संस्थाओं, व्यक्ति और कार चाहते हैं। एक व्यक्ति के पास कई कारें हो सकती हैं।
मेरे द्वारा बनाए गए रू
entity --class ~.domain.Person
field string Name
entity --class ~.domain.Car
field string Name
field reference --fieldName owner --type ~.domain.Person
field set --fieldName ownedCars --type ~.domain.Car --class ~.domain.Person --cardinality ONE_TO_MANY
कार के लिए
जनरेट किया वर्ग का उपयोग कर संस्थाओं:
@RooJavaBean
@RooToString
@RooEntity
public class Car {
private String Name;
@ManyToOne
private Person owner;
}
व्यक्ति लिए जेनरेट होने वर्ग
@RooJavaBean
@RooToString
@RooEntity
public class Person {
private String Name;
@OneToMany(cascade = CascadeType.ALL)
private Set<Car> ownedCars = new HashSet<Car>();
}
हालांकि, डेटाबेस में, वहाँ 3 रहे हैं टेबल
(दो के insted)टेबल कार (अपेक्षित रूप से)
CREATE TABLE "TEST"."CAR"
(
"ID" NUMBER(19,0),
"NAME" VARCHAR2(255 BYTE),
"VERSION" NUMBER(10,0),
"OWNER" NUMBER(19,0)
)
तालिका व्यक्ति (अपेक्षित रूप से)
CREATE TABLE "TEST"."PERSON"
(
"ID" NUMBER(19,0),
"NAME" VARCHAR2(255 BYTE),
"VERSION" NUMBER(10,0)
)
और भी PERSON_OWNED_CARS (जो की उम्मीद नहीं है, यह कई संबंध बनाने के लिए कई नहीं है)
CREATE TABLE "TEST"."PERSON_OWNED_CARS"
(
"PERSON" NUMBER(19,0),
"OWNED_CARS" NUMBER(19,0)
)
आखिरी तालिका क्यों उत्पन्न हुई है? आखिरी तालिका का उद्देश्य क्या है, यह कई रिश्तों के लिए बहुत कुछ नहीं है? क्या इससे बचा जा सकता है? क्या मुझसे कुछ गलत हो रही है?
बहुत बढ़िया जवाब! धन्यवाद! – Emir
इसे स्वयं से करने के लिए '- mappedBy स्वामी' विकल्प का उपयोग किया जा सकता है। सवाल-जवाब के लिए धन्यवाद! – xverges
बहुत उपयोगी उत्तर, मैं टेबल पीढ़ी के व्यवहार के बारे में वास्तव में यहां खो गया था। –