2012-04-11 4 views
0

解決策を見つける際に問題がありますが、それはまったく不可能かもしれないと思いますが、ここでも試してみます。私の注釈はTblOrderがTblOrderPosのセットを持つことができるようにしたいと見ているだろうか(ORDERIDでidentyfiedレガシーDBスキーマとコンポジットFKとPKを使用したHibernate

TblOrder 
ORDERID (INT) PK 
CUSTOMERID (INT) PK 
REPID (INT)  PK 
ISORDER (INT) PK 
other columns... 

TblOrderPos 
ORDERID (INT) PK 
POSITIONID (INT) PK 
other columns 

: は、したがって、次の2つのテーブルを持っている(なしFKS)MyISAMテーブルでMySQLの私のレガシーDBスキーマをふりすることができます)とTblOrderPosプライベートTblOrderインスタンス?私は両方のテーブルのためにEmbeddedIdオブジェクトを作成しました。毎回@ManyToOneまたは@OoToManyで@JoinColumnsをオーバーライドするプロパティを作成しようとしました.HibernateはPK列の数が一致しない(よくできません)と不平を言います。

私は本当に誰かがアイデアを持っていると思っています。

-----------更新------------ TblOrderPosでTblOrder

@OneToMany(mappedBy="shoporder") 
@JoinColumn(name="ORDERID") 
public List<Orderposition> getOrderpositions(){ 
    return this.positions; 
} 

public void setOrderPositions(List<Orderposition> positions){ 
    this.positions = positions; 
} 

@ManyToOne 
@JoinColumn(name="ORDERID") 
public Shoporder getShoporder(){ 
    return this.shoporder; 
} 

public void setShoporder(Shoporder order){ 
    this.shoporder = order; 
} 

それは私が得るエラーです: TblOrderPosからのTblOrderを参照する外部キーの列数が間違っています。 4

答えて

1

あるべきことを推奨しますが、それは複合-idでなんとかですないです。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html

+0

おそらく、彼はする方法について、具体的求めていました注釈を使用してそれを行います。 –

+0

はい、それは役に立ちます。アノテーションでは不可能な場合は、XMLの例も役立ちます。 – Michael

0

私はそのような構造を使用しましたので、それは、注釈で可能です。

@ManyToOneアノテーションを使用して複合PKの表にリンクしていますか?それはそのようになります。私は@IdClassアノテーションを使用し、複合PKのためのクラスを提供しています

@ManyToOne 
    @JoinColumns({ 
     @JoinColumn(name = "WOJ_ID", referencedColumnName = "WOJ_ID"), 
     @JoinColumn(name = "POW_NR", referencedColumnName = "POW_NR"), 
     }) 

、いくつかの例は、他の質問に対する私の答えに掲載されています Why is my EmbeddedId in hibernate not working?

関連する問題