请教.Hibernate 中多主键关联的 hbm 文件如何写
请教各位高人:
我这里有三个表:
1、分类(XTFLB)
大类编号 DLBH NUMBER (PK)
大类名称 DLMC VARCHAR2
2、模块(XTMKB)
大类编号 DLBH NUMBER (PK)
模块编号 MKBH NUMBER (PK)
3、页面(XTYMB)
大类编号 DLBH NUMBER(PK)
模块编号 MKBH NUMBER (PK)
页面编号 YMBH NUMBER (PK)
每个分类中有多个模块,每个模块中有多个页面,这样的多主键hbm文件如何写,谢谢
问题点数:100、回复次数:9Top
1 楼libin2722(禮物)回复于 2006-01-06 02:16:38 得分 0
急,请各位高手帮帮我,一经解决立刻结帖Top
2 楼funcreal(为中华之崛起而编程 ) 回复于 2006-01-06 08:07:07 得分 0
<class >
<composite-id>
<property name="主键一"/>
<property name="主键二"/>
<property name="主键三"/>
</class>
强烈不鼓励使用这种方式
Top
3 楼funcreal(为中华之崛起而编程)回复于 2006-01-06 08:09:41 得分 0
你可以建一个业务无关的自增字段来作主键。Top
4 楼Little_qd(沉淀思想)回复于 2006-01-06 09:02:37 得分 0
5 楼funcreal(为中华之崛起而编程)回复于 2006-01-06 10:09:04 得分 0
7.4. 作为联合标识符(As Composite Identifiers)
你可以使用一个component作为一个实体类的标识符。 你的component类必须满足以下要求:
它必须实现java.io.Serializable接口
你不能使用一个IdentifierGenerator产生组合关键字。作为替代应用程序必 须分配它自己的标识符.
如果你希望使用saveOrUpdate()或者级联保存/更新(cascading save / update),你应该实现 Interceptor.isUnsaved()。
使用<composite-id> 标签(它和<component> 标签有同样的属性和元素)代替<id>标签。 下面有个联合标识符类的定义:
<class name="eg.Foo" table"FOOS">
<composite-id name="compId" class="eg.FooCompositeID">
<key-property name="string"/>
<key-property name="short"/>
<key-property name="date" column="date_" type="date"/>
</composite-id>
<property name="name"/>
....
</class>
这时候,任何到FOOS的外键也同样是联合的, 在你其他类的映射文件中也必须同样定义。 一个到Foo的定义应该像以下这样:
<many-to-one name="foo" class="eg.Foo">
<!-- the "class" attribute is optional, as usual -->
<column name="foo_string"/>
<column name="foo_short"/>
<column name="foo_date"/>
</many-to-one>
<set name="foos">
<key column="owner_id"/>
<many-to-many class="eg.Foo">
<column name="foo_string"/>
<column name="foo_short"/>
<column name="foo_date"/>
</many-to-many>
</set>
另一方面,<one-to-many>元素通常不定义字段.
如果 Foo 自己包含集合, 那么他们也需要使用联合外键。
<class name="eg.Foo">
....
....
<set name="dates" lazy="true">
<key> <!-- a collection inherits the composite key type -->
<column name="foo_string"/>
<column name="foo_short"/>
<column name="foo_date"/>
</key>
<element column="foo_date" type="date"/>
</set>
</class>
Top
6 楼rwxybh(行云)回复于 2006-01-06 11:21:32 得分 0
使用联合主键,上面的都说了,建议不要使用这个,以后改动的话有的麻烦了Top
7 楼rosifox(下着鱼的天)回复于 2006-01-06 12:29:19 得分 0
这种问题应该查hibernate参考,别老问Top
8 楼foxox()回复于 2006-01-06 19:46:20 得分 0
增加业务无关字段作为主键
强烈同意Top





