खोज…


पैरामीटर

टिप्पणी विवरण
@OneToOne संबंधित वस्तु के साथ एक से एक संबंध निर्दिष्ट करता है।
@OneToMany एक एकल ऑब्जेक्ट निर्दिष्ट करता है जो कई ऑब्जेक्ट्स के लिए मैप करता है।
@ManyToOne उन वस्तुओं के संग्रह को निर्दिष्ट करता है जो किसी एकल ऑब्जेक्ट पर मैप करते हैं।
@Entity किसी ऑब्जेक्ट को डेटाबेस तालिका में मैप करता है।
@Table निर्दिष्ट करता है कि कौन सी डेटाबेस तालिका इस ऑब्जेक्ट को भी मैप करती है।
@JoinColumn निर्दिष्ट करता है कि किस कॉलम में एक फोरगिन कुंजी संग्रहीत है।
@JoinTable एक मध्यवर्ती तालिका निर्दिष्ट करता है जो विदेशी कुंजी संग्रहीत करता है।

द्वि-दिशात्मक कई उपयोगकर्ता का उपयोग करने वाले कई टेबल ऑब्जेक्ट में शामिल होने में कामयाब रहे

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany(mappedBy = "bar")
    private List<FooBar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToMany(mappedBy = "foo")
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar {
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}

उपयोगकर्ता को प्रबंधित करने वाली एक इंटरमीडिएट जॉइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट्स के लिए कई Foo ऑब्जेक्ट्स के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। आवेदन के हिस्से के रूप में एक FooBar ऑब्जेक्ट है।

आमतौर पर तब उपयोग किया जाता है जब आप संबंध बनाने के लिए अतिरिक्त जानकारी संग्रहीत करना चाहते हैं जैसे कि संबंध बनाने की तिथि।

यहाँ छवि विवरण दर्ज करें

द्वि-दिशात्मक कई हाइबरनेट का उपयोग करने वाले कई लोग तालिका में शामिल हुए

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="fooId"),
        inverseJoinColumns = @JoinColumn(name="barId"))
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="barId"),
        inverseJoinColumns = @JoinColumn(name="fooId"))
    private List<Foo> foos;
}

कई Foo ऑब्जेक्ट्स के बीच एक इंटरमीडिएट जॉइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट्स के बीच संबंध निर्दिष्ट करता है जो हाइबरनेट का प्रबंधन करता है।

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। हालांकि इसका तात्पर्य है कि आवेदन के हिस्से के रूप में कोई FooBar ऑब्जेक्ट नहीं है।

यहाँ छवि विवरण दर्ज करें

विदेशी कुंजी मानचित्रण का उपयोग करके द्वि-दिशात्मक एक से कई रिश्ते

@Entity
@Table(name="FOO") 
public class Foo {
    private UUID fooId;
    
    @OneToMany(mappedBy = "bar")
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;
}

एक विदेशी कुंजी का उपयोग करके कई Bar वस्तुओं के लिए एक Foo वस्तु के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। विदेशी कुंजी को BAR टेबल पर fooId नामक कॉलम में संग्रहित किया जाता है।

यहाँ छवि विवरण दर्ज करें

द्वि-दिशात्मक एक से एक संबंध Foo.class द्वारा प्रबंधित

@Entity
@Table(name="FOO")    
public class Foo {
    private UUID fooId;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "barId")
    private Bar bar;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    
    @OneToOne(mappedBy = "bar")
    private Foo foo;
}

विदेशी कुंजी का उपयोग करके एक Bar ऑब्जेक्ट से एक Foo ऑब्जेक्ट के बीच दो-तरफ़ा संबंध निर्दिष्ट करता है।

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। विदेशी कुंजी पर संग्रहीत है FOO नामक कॉलम में तालिका barId

ध्यान दें कि mappedBy मान ऑब्जेक्ट पर फ़ील्ड नाम है, स्तंभ नाम नहीं।

यहाँ छवि विवरण दर्ज करें

यूनी-डायरेक्शनल वन टू कई रिलेशनशिप यूज़र्स यूज़ेड टेबल में शामिल हुए

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToMany
    @JoinTable(name="FOO_BAR",
        joinColumns = @JoinColumn(name="fooId"),
        inverseJoinColumns = @JoinColumn(name="barId", unique=true))
    private List<Bar> bars;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;

    //No Mapping specified here.
}

@Entity
@Table(name="FOO_BAR")
public class FooBar {
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId", unique = true)
    private Bar bar;

    //You can store other objects/fields on this table here.
}

उपयोगकर्ता को प्रबंधित करता है जो एक मध्यवर्ती ज्वाइन टेबल का उपयोग करके कई Bar ऑब्जेक्ट के लिए एक Foo वस्तु के बीच एक तरह से संबंध निर्दिष्ट करता है।

यह एक ManyToMany रिश्ते के समान है, लेकिन यदि आप लक्ष्य विदेशी कुंजी में एक unique बाधा जोड़ते हैं तो आप यह OneToMany सकते हैं कि यह OneToMany

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Foo और Bar वस्तुओं के बीच संबंध FOO_BAR नामक तालिका में संग्रहीत किए जाते हैं। आवेदन के हिस्से के रूप में एक FooBar ऑब्जेक्ट है।

ध्यान दें कि Foo वस्तुओं में Bar ऑब्जेक्ट्स की मैपिंग नहीं है। Foo ऑब्जेक्ट्स को प्रभावित किए बिना Bar ऑब्जेक्ट्स को स्वतंत्र रूप से हेरफेर किया जा सकता है।

आमतौर पर स्प्रिंग सिक्योरिटी के साथ उपयोग किया जाता है जब एक User ऑब्जेक्ट की स्थापना होती है जिसके पास Role की एक सूची होती है जो वे प्रदर्शन कर सकते हैं। आप को हटाने झरने के बारे में चिंता किए बिना एक उपयोगकर्ता के लिए जोड़ सकते हैं और भूमिकाओं को हटा सकते हैं Role की।

यहाँ छवि विवरण दर्ज करें

यूनी-डायरेक्शनल वन टू वन रिलेशनशिप

@Entity
@Table(name="FOO")
public class Foo {
    private UUID fooId;
    
    @OneToOne
    private Bar bar;
}

@Entity
@Table(name="BAR")
public class Bar {
    private UUID barId;
    //No corresponding mapping to Foo.class
}

एक Bar वस्तु के लिए एक Foo वस्तु के बीच एक तरह से संबंध निर्दिष्ट करता है।

Foo वस्तुओं को FOO नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है। Bar ऑब्जेक्ट्स को BAR नामक तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है।

ध्यान दें कि Foo वस्तुओं में Bar ऑब्जेक्ट्स की मैपिंग नहीं है। Foo ऑब्जेक्ट्स को प्रभावित किए बिना Bar ऑब्जेक्ट्स को स्वतंत्र रूप से हेरफेर किया जा सकता है।

यहाँ छवि विवरण दर्ज करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow