hibernate中多关键字表之间关联出问题
最近刚开始接触hibernate,在做到多关键字表之间关联出了点问题,想向大家请教一下。
创建两个表一个名叫db_contract_container表,关键字为dr_no,vessel_no,voyage_no。另一个表为db_contract_container_cargo,关键字为dr_no,vessel_no,voyage_no,cargo_no。当两个表建立主健关联即container的dr_no,vessel_no,voyage_no与cargo的dr_no,vessel_no,voyage_no关联后
总会报这样的错误:Foreign key (FKFBF0D4ACFBC02852:db_contract_container_cargo [dr_no])) must have same number of columns as the referenced primary key (db_contract_container [dr_no,vessel_no,voyage_no])。
其中hibernate中的xml文件是eclipse插件根据数据库自动生成的,cargo表的描述文件为
<class name="DbContractContainerCargo" table="db_contract_container_cargo">
<composite-id name="id" class="DbContractContainerCargoKey">
<key-property name="cargoNo" column="cargo_no" type="string"/>
<key-many-to-one name="dbContractContainer" column="dr_no" class="DbContractContainer"/>
<key-many-to-one name="dbContractContainer1" column="vessel_no" class="DbContractContainer"/>
<key-many-to-one name="dbContractContainer2" column="voyage_no" class="DbContractContainer"/>
</composite-id>
container表的描述文件为
<class name="DbContractContainer" table="db_contract_container">
<composite-id name="id" class="DbContractContainerKey">
<key-property name="drNo" column="dr_no" type="string"/>
<key-property name="vesselNo" column="vessel_no" type="string"/>
<key-property name="voyageNo" column="voyage_no" type="string"/>
</composite-id>
<set name="dbContractContainerCargoSet" inverse="true">
<key column="dr_no"/>
<one-to-many class="DbContractContainerCargo"/>
</set>
<set name="dbContractContainerCargo1Set" inverse="true">
<key column="vessel_no"/>
<one-to-many class="DbContractContainerCargo"/>
</set>
<set name="dbContractContainerCargo2Set" inverse="true">
<key column="voyage_no"/>
<one-to-many class="DbContractContainerCargo"/>
</set>
请问报的错误是什么原因,当我把container表设为单主健时,错误就消失了。谢谢大家帮忙解答一下
问题点数:20、回复次数:2Top
1 楼jacshan(猎人)回复于 2005-09-18 22:00:26 得分 20
不知道,帮顶!!Top
2 楼songqian()回复于 2005-09-19 16:14:23 得分 0
问题原因找到了,是由于插件自动生成的xml文件有问题将container表的描述文件中set改动一下即可
<set name="dbContractContainerCargoSet" inverse="true"
table="db_contract_container_cargo" cascade="delete">
<key not-null="true">
<column name="dr_no" />
<column name="vessel_no" />
<column name="voyage_no" />
</key>
<one-to-many class="DbContractContainerCargo" />
</set>
将原来的3个set改为一个setTop
相关问题
- 表名和关键字重名
- BDE取表的主关键字
- 100分!!!问hibernate表间关联问题
- hibernate中关联表的设计问题
- 关键字:hibernate, No TransactionManagerLookup specified,Not binding factory to JNDI, no JNDI name configured
- 〉〉〉在SQL中如何获得一个表的主键字段,又如何获得用这个关键字段与这个表建立关联的其他表的名称??
- 如何分析出一个表的关键字段???也就是关键字段的信息在哪里存储?
- 如何实现:输入“关键字1、关键字2”,以“、”表示“或”,对库中某字段进行检索。
- 如何快速地从关键字列表中检索某一字符串内包含的对应关键字
- 有四个表,没有关联,字段不一样,想在四个表同时搜索同一关键字,得到的结果分页显示,请问SQL该怎么写??





