Wie Stellen Sie Zusammengesetzte Schlüssel in Hibernate mit Annotations?
Also ich reverse engineered einige Tabellen aus meiner db und wenn ich versuchen, zu speichern mein Objekt in die db bekomme ich folgende Fehlermeldung:
Initial SessionFactory creation failed.org.hibernate.AnnotationException: Ein Fremdschlüssel bezieht sich com.mycode.Block von com.mycode.Konto die falsche Nummer der Spalte. sollte 2
Exception in thread "main" java.lang.ExceptionInInitializerError
Die Domain-Objekte-Block enthält eine Reihe von Konto-Objekten:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "Block")
public Set<EAccount> getAccounts() {
return this.Accounts;
}
Konto eines Zusammengesetzten Schlüssels, der Id und Rolle. Dieser wurde eingerichtet, in einer separaten Klasse:
@Embeddable
public class BlockAccountId implements java.io.Serializable {
private long blockOid;
private String accountRole;
public BlockAccountId() {
}
public BlockAccountId(long blockOid, String accountRole) {
this.blockOid = blockOid;
this.accountRole = accountRole;
}
@Column(name = "BLOCK_OID", nullable = false)
public long getBlockOid() {
return this.blockOid;
}
public void setBlockOid(long blockOid) {
this.blockOid = blockOid;
}
@Column(name = "ACCOUNT_ROLE", nullable = false, length = 10)
public String getAccountRole() {
return this.accountRole;
}
public void setAccountRole(String accountRole) {
this.accountRole = accountRole;
}
Deshalb möchte ich wissen. Wie kann ich die Tabellen Verknüpfen Blockieren und Konto auf blockOid aber immer noch sorgen für die Konto-Tabelle hat sowohl blockOid und accountRole als einen zusammengesetzten Schlüssel.
Alle Beispiele würde sehr geschätzt werden!
N. B, dies ist ein Block (Eine) Konto (Viele) - Beziehung.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste ist, um Ihren Verein direkt in der embedded-id-Komponente.
Beispiel (Schreibe Nur das wichtige getter() und setter())
Die entsprechende Datenbank-Tabelle sind :
basierend auf hibernate-Dokumentation hier ist die link
basierend auf Sie können Sie das folgende tun :
@Entity
public class Konto {
}