Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

हाइबरनेट मैपिंग - एक एसोसिएशन टेबल के साथ दो टेबल में शामिल होना - लेकिन एक मोड़ के साथ

आप कार्ड की तालिका को इंगित करने के लिए @OneToOne के बाद एनोटेशन @JoinTable का उपयोग कर सकते हैं, इसलिए आपको कार्ड के लिए किसी इकाई की आवश्यकता नहीं होगी, लेकिन यदि कार्ड की तालिका केवल एक संबंधपरक तालिका नहीं है, तो आप उपयोगकर्ता में कार्ड को @OneToOne के रूप में मैप कर सकते हैं और एक @Transient 'getAddress ()' विधि है जो 'this.card.getAddress ()' लौटाती है, लेकिन कार्ड की इकाई पर आपको पता और कार्ड (@OneToOne(mappedBy='card_id')) के बीच संबंध को मैप करना होगा, और में पता आप card_id को @Id के रूप में मैप कर सकते हैं।

पहला विकल्प

ग्राहक:

@OneToOne
@JoinTable(name="card", joinColumns = @JoinColumn(name="cust_id"),
inverseJoinColumns = @JoinColumn(name="card_id"))
private Address address;

दूसरा विकल्प

ग्राहक:

@OneToOne(mappedBy="cust_id")
private Card card;

...
@Transient
public Address getAddress(){
 return this.card == null ? null : this.card.getAddress();
}

कार्ड:

@OneToOne(mappedBy="card_id")
private Address address;

पता:

@Id
private String card_id;

दूसरे मामले में कार्ड में एक एंबेडेड pk होता है जो दो fks (ग्राहक और पता) द्वारा बनता है

कार्ड:

@EmbeddedId
private CustomerAddressPK id;

CustomerAddressPK

@Embeddable
public class CustomerAddressPK(){

  private String cust_id;
  private String card_id;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में Dapper QueryMultiple का उपयोग करना

  2. ODP.NET 2.111 और ODP.NET 4.112 को एक ही मशीन में एक साथ कैसे स्थापित करें जबकि दोनों एक ही डेटाबेस सर्वर की ओर इशारा करते हैं

  3. जब मैं बाधा का नाम नहीं जानता तो मैं ओरेकल में एक शून्य बाधा कैसे छोड़ सकता हूं?

  4. ORACLE में विभाजन तालिका का नाम स्वतः बदल जाता है

  5. ओरेकल क्वेरी का अनुकूलन