Ich habe einige Mühe, eine Lösung dafür zu finden, und ich denke, dass es überhaupt nicht möglich sein wird, aber ich werde es noch versuchen hier. So können mit MyISAM (keine FKs) hat die folgenden zwei Tabellen mein Vermächtnis DB-Schema auf MySQL vorgeben:Hibernate mit altem DB-Schema und zusammengesetzten FKs und PKs
TblOrder
ORDERID (INT) PK
CUSTOMERID (INT) PK
REPID (INT) PK
ISORDER (INT) PK
other columns...
TblOrderPos
ORDERID (INT) PK
POSITIONID (INT) PK
other columns
Was würde meine Anmerkungen müssen aussehen wie TblOrder zu ermöglichen, einen Satz von TblOrderPos zu haben (identyfied von ORDERID) und TblOrderPos eine private TblOrder-Instanz? Ich habe EmbeddedId-Objekte für beide Tabellen erstellt und jedes Mal, wenn ich versuche, eine Eigenschaft mit @ManyToOne oder @OneToMany zu erstellen, die @JoinColumns überschreibt, beklagt Hibernate, dass die Anzahl der PK-Spalten nicht übereinstimmt (naja, es kann nicht).
Ich hoffe wirklich jemand hat eine Idee oder wenn es überhaupt möglich ist.
----------- ------------ Update
Auf TblOrder
@OneToMany(mappedBy="shoporder")
@JoinColumn(name="ORDERID")
public List<Orderposition> getOrderpositions(){
return this.positions;
}
public void setOrderPositions(List<Orderposition> positions){
this.positions = positions;
}
Auf TblOrderPos
@ManyToOne
@JoinColumn(name="ORDERID")
public Shoporder getShoporder(){
return this.shoporder;
}
public void setShoporder(Shoporder order){
this.shoporder = order;
}
Das ist der Fehler, den ich bekomme: Ein Fremdschlüssel, der TblOrder von TblOrderPos bezieht, hat die falsche Spaltennummer. sollte 4
Vielleicht wurde er gefragt speziell darüber, wie mach das mit Annotationen. –
Ja, das wäre hilfreich. Wenn dies mit Annotationen nicht möglich ist, würde auch ein XML-Beispiel helfen. – Michael