1

A 1---* A_B *---1 B

テーブル A には aID (PK)、テーブル B には bID (PK)、テーブル A_B には次のものがあります。

aID (PK、FK)、bID (PK、FK)、数値

私は試した

property name="A" fieldtype="many-to-one" cfc="A" fkcolumn="aID";
property name="B" fieldtype="many-to-one" cfc="B" fkcolumn="bID";
property name="num" type="numeric";

しかし、CF は ID 列を要求し続けます... どうすればよいですか? FK は PK である必要があります。

CFC で指定する方法がない場合、このリンク テーブルを hbm xml で表現するにはどうすればよいですか?

どうも

4

4 に答える 4

3

どうやら hbmxml は必要ありません! 素晴らしい...

property name="A" fieldtype="id,many-to-one" cfc="A" fkcolumn="aID";
property name="B" fieldtype="id,many-to-one" cfc="B" fkcolumn="bID";
property name="num" type="numeric";

Brian Kotek の回答 ( http://groups.google.com/group/cf-orm-dev/msg/a6ccc2194fceb930 ) に感謝します。

于 2009-12-28T23:25:34.610 に答える
1

一意の自動生成 ID を持つようにテーブルを変更できますか? 主キーは一意であり、変更されないようにする必要があります。(リンク マッピング キーの一部は技術的に変更される可能性があります) また、複合列の代わりに主キーによってレコードを一意に識別できるため、複合キーの代わりに代理キーを使用することをお勧めします。

私は Hibernate を使用しており、すべてのリンク テーブルには独自の代理主キーがあります。それ以外の場合は、複合 ID マッピング宣言を処理する必要があります。

于 2009-12-28T21:25:59.970 に答える
0

property="Bs"のfkcolumnは"bID"である必要があることに気付きました。

property name="Bs" fieldtype="one-to-many" cfc="B" fkcolumn="bID";

あなたのスキーマから私が気付いたもう一つのことは、AテーブルとBテーブルの1つのアイテムにリンクするリンクテーブルには多くのアイテムがあるので、リンクテーブルは本当に多対1であると信じています。「多対1」に切り替えてみて、それが役立つかどうかを確認してください。

于 2009-12-25T21:00:46.440 に答える
0

複合 ID を使用してみることができますが、実際には非常に良い例を見つけることができませんでしたが、ここに 2 つの参考文献があります。

http://www.theserverside.com/discussions/thread.tss?thread_id=47723
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid

于 2009-12-28T20:53:48.733 に答える