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 表中的一个项目。尝试切换到“多对一”,看看是否有帮助。

于 2009-12-25T21:00:46.440 回答
0

您可以尝试使用复合 id,实际上找不到很好的示例,但这里有两个参考;

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 回答