2012-10-24 29 views
9

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

यही कारण है कि मैं एक में शामिल होने तालिका का उपयोग करना चाहते हैं:

अंत में, मैं हाइबरनेट एनोटेशन का उपयोग करने के लिए इस प्रदर्शन करने के लिए चाहते हैं।

मुझे एक्सएमएल मैपिंग का उपयोग करके ऐसा करने के लिए कुछ उदाहरण मिले लेकिन एनोटेशन के साथ कुछ भी नहीं।

मेरा मानना ​​है कि यह होगा कैसे टेबल

CREATE TABLE `PRODUCT` (
    `PRODUCT_ID`  BIGINT  PRIMARY KEY AUTO_INCREMENT 
); 

CREATE TABLE `PARTS` (
    `PART_ID`   BIGINT  PRIMARY KEY AUTO_INCREMENT 
); 

-- USER_IMAGE_ID must be unique if we want a one-to-many relationship between PRODUCTS & PARTS tables 
CREATE TABLE `USER_DETAILS_IMAGE` (
    `PRODUCT_ID`  BIGINT, 
    `PART_ID`   BIGINT UNIQUE, 
    CONSTRAINT `FK_PRODUCT_ID` FOREIGN KEY (`PRODUCT_ID`) REFERENCES `PRODUCT`(`PRODUCT_ID`), 
    CONSTRAINT `FK_PART_ID`  FOREIGN KEY (`PART_ID`)  REFERENCES `PARTS`(`PART_ID`) 
); 

उत्तर

24

बनाया जा करने की जरूरत है उदाहरण के लिए न देखें।

@Entity 
public class Product { 

    private String serialNumber; 
    private Set<Part> parts = new HashSet<Part>(); 

    @Id 
    public String getSerialNumber() { return serialNumber; } 
    void setSerialNumber(String sn) { serialNumber = sn; } 

    @OneToMany 
    @JoinTable(
      name="PRODUCT_PARTS", 
      joinColumns = @JoinColumn(name="PRODUCT_ID"), 
      inverseJoinColumns = @JoinColumn(name="PART_ID") 
    ) 
    public Set<Part> getParts() { return parts; } 
    void setParts(Set parts) { this.parts = parts; } 
} 


@Entity 
public class Part { 
    ... 
} 

इसके अलावा, ध्यान दें कि यह दिशाहीन एक-से-कई संगठनों के लिए डिफ़ॉल्ट है: official documentation पढ़ें। इसलिए यदि आपको डिफ़ॉल्ट तालिका और कॉलम नाम सूट करते हैं तो आपको @JoinTable एनोटेशन प्रदान करने की भी आवश्यकता नहीं है।

+0

धन्यवाद जेबी निजेट। मैंने अपने प्रश्न को अद्यतन किया है जो मुझे विश्वास है कि आवश्यक तालिकाओं की तरह दिखेंगे। क्या वो सही है? –

+0

प्रलेखन को इंगित करने के लिए धन्यवाद (एकल पृष्ठ संस्करण आसान है!)। मुझे डॉक्स सटीक लेकिन असभ्य रूप से मिलते हैं इसलिए मैं हमेशा नए तकनीक पर काम शुरू करते समय उदाहरणों की तलाश करता हूं। वह एक अच्छा था लेकिन टेबल निर्माण भाग को भी याद किया http://www.dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-one-to-many-using-annotations-1.html –

+0

यह सही दिखता है, एनईआरआईएल_NUMBER को छोड़कर एनोटेशन से मेल खाने के लिए PRODUCT_ID होना चाहिए। –