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

मैं एक इकाई वर्ग के लिए सिंगल कॉलम में दो अलग-अलग टेबल कई बार मैपिंग करने की कोशिश कर रहा हूं

मुझे लगता है कि आप जो खोज रहे हैं वह ORM अनुभाग को @Any . के बारे में हाइबरनेट करें एनोटेशन :

@Any(metaColumn = @Column(name = "userType"))
@AnyMetaDef(name = "PropertyMetaDef", metaType = "string", idType = "long",
            metaValues = {
                    @MetaValue(value = "User", targetEntity = User.class),
                    @MetaValue(value = "LDAP", targetEntity = LDAPUser.class)
            }
    )
@JoinColumn(name="assignedto_id", referencedColumnName="id", insertable=false, updatable=false)   
private Object assignedTo

लेकिन यह कोई विदेशी कुंजी नहीं बनाएगा। मुझे नहीं लगता कि अलग-अलग तालिकाओं के लिए एक ही कॉलम पर दो विदेशी कुंजी बनाना संभव है (क्या इसका कोई मतलब है?)।

वैकल्पिक रूप से, यदि दो वर्ग एक सामान्य सुपर क्लास से विस्तारित हो सकते हैं, तो आप विरासत मानचित्रण कुछ ऐसा ही हासिल करने के लिए।

उदाहरण के लिए:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public static class UserEntity {

    @Id
    private Long id;

    ...
}

@Entity
public class User extends UserEntity {
...
}

@Entity
public class LDAPUser extends UserEntity {
...
}

और फिर

      @ManyToOne
      @JoinColumn(name="assignedto_id", referencedColumnName="id", insertable=false, updatable=false)   
      private UserEntity assignedto;

हालांकि यह तीन टेबल बनाएगा। तालिका UserEntity assignedto_id . पर एक विदेशी कुंजी होगी कॉलम। User आईडी और LDAPUser आईडी में प्रत्येक UserEntity . पर एक बाधा होगी पहचान। मूल रूप से, जो आपने मूल रूप से पूछा था उसके करीब पहुंचना।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आवश्यक परिणाम प्राप्त करने के लिए एक MySQL क्वेरी लिखें

  2. रेपोस्ट:PHP के साथ RSS फ़ीड बनाना

  3. केस संवेदनशील RLIKE

  4. ट्रिगर से बुलाए गए संग्रहीत कार्यविधियों में गतिशील कथनों के लिए समाधान

  5. परिणाम सेट में ऑटो-नंबरिंग पंक्तियों के लिए शुद्ध-एसक्यूएल तकनीक