Ich benutze NetBeans nicht, also kann ich nicht wirklich etwas über seine Mapping-Tools sagen.
Für die Zuordnung eines zusammengesetzten Schlüssels gibt es eine Reihe von Optionen. Sie können
definieren einen separaten @Embeddable
Objekt mit den PK Felder und verwenden Sie es als @EmbeddedId
in Ihrer @Entity
Klasse
@Embeddable
public class MyCompositePK {
@Column
private String fieldA;
@Column
private String fieldB;
}
@Entity
public class MyBean {
@EmbeddedId
private MyCompositePK id;
@Column
private String fieldC;
}
definieren einen nicht abgebildet POJO mit den PK Felder und verwenden Sie es als @IdClass
in der @Entity
.
@Entity
@IdClass(value=ClassAB.ClassABId.class)
public class ClassAB implements Serializable {
private String idA;
private String idB;
@Id
@Column(name="ID_A")
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
@Id
@Column(name="ID_B")
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
static class ClassABId implements Serializable {
private String idA;
private String idB;
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
// implement equals(), hashcode()
}
}
In diesem Beispiel ClassABId
ist eine statische innere Klasse nur für die Bequemlichkeit.
Diese Optionen werden auch in Pascal Thivent die ausgezeichnete Antwort auf diese Frage erklärt: How to map a composite key with Hibernate?.
Diese verwandte Frage diskutiert Unterschiede zwischen diesen Ansätzen: Which anotation should I use: @IdClass or @EmbeddedId. Beachten Sie, dass die Deklaration der Felder mit der Methode @IdClass
dupliziert wird.
Wie auch immer, ich glaube nicht, dass es eine Alternative zum Erstellen von zwei Klassen gibt. Deshalb habe ich diese Frage gestellt: Mapping a class that consists only of a composite PK without @IdClass or @EmbeddedId. Es scheint, dass es eine Hibernate-spezifische Funktion dafür gibt.
Als Nebenbemerkung, wenn Sie Kontrolle über die DB-Struktur haben, könnten Sie auch in Betracht ziehen, zusammengesetzte Schlüssel zu vermeiden. There are some reasons to do so.
@ Xavi López: Sie bilden die PK zusammen. – user2046810