Hibernate Plusieurs mappages avec un nombre différent de colonnes

Salut j’ai 2 tables comme ci-dessous

Tableau 1:


     + ------------------- +
     |  ID LOB col1 col2 |
     + ------------------- +

Clé primaire (ID et LOB)

Tableau 2:


     + ----------------- +
     |  SK ID col3 col4 |
     + ----------------- +

Clé primaire (SK)

Je dois donner une relation multiple à un entre le tableau 2 et le tableau1 , car ce dernier contient compositePrimaryKey (ID et LOB), mais il n’y a pas de colonne liée à LOB dans le tableau . Je suis incapable de fournir la cartographie. S’il vous plaît aider sur ce point.

EDIT j’ai essayé la mise en veille prolongée pour Table2:

    

Ce qui précède ne fonctionne pas. Lors de l’extraction d’un enregistrement, il essaie d’extraire le code LOB de la table2, ce qui n’existe pas du tout dans la Table1.

En supposant que table2.SK est un FK dans table1.ID et qu’aucune entrée de table1 ne possède le même ID, vous pouvez écrire le mappage comme suit:

 @ManyToOne @JoinColumn(name = "ID", insertable = false, updatable = false) private Class1 class1Obj; 

S’il y a plus de lignes table1 avec le même ID, le mappage échouera car un enfant serait alors associé à plusieurs parents.

Ainsi, pour une association many-to-one un appropriée, vous avez besoin d’une clé FK en colonne Parent unique.

Hibernate @Id ne doit pas nécessairement correspondre à la clé primaire de la firebase database réelle (bien qu’il soit souhaitable qu’elles correspondent, bien sûr).

Si ID est une colonne unique dans Table1 , mappez uniquement l’identifiant Hibernate et laissez LOB comme un champ ordinaire.

Si ID n’est pas une colonne unique, votre plusieurs-en-un ne fonctionnera pas correctement, car il y aurait plusieurs lignes correspondantes dans la table référencée.

 @Entity @Table(name="Table_name") public class table_name { @EmbeddedId @AtsortingbuteOverrides({ @AtsortingbuteOverride(name = "id1", column = @Column(name = "col1")), @AtsortingbuteOverride(name = "id2", column = @Column(name = "col2")) })