Hibernate中如何处理一对多关系中的组合主键
2008-04-25 05:52
453 查看
前段时间碰到这个问题,主要是hbm文件的的写法问题。我建了两个表,parent中的Pid与child中的Cid是一对多关系,Child中的cid与otherid只组合主键.如下
parent表 字段名
类型 长度 Pid (PK) Character 10 Name Character 10 Child表 字段名
类型 长度 cid (PK) Character 10 Otherid (PK) Smallint Name Character 10 hbm文件:
Parent.hbm.xml
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE Hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd"'">http://Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd">
<Hibernate-mapping><class name="Parent" table="parent"><id name="pid" column="pid" type="string" unsaved-value="any" > <generator class="assigned"/> </id><property name="name"/><set name="children" cascade="all-delete-orphan" inverse="true" lazy="true" > <key column="CID" /> <one-to-many class="Child"/> </set></class></Hibernate-mapping>
Child.hbm.xml
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE Hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd"'">http://Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd">
<Hibernate-mapping><class name="Child" table="child"><composite-id name="childpk" class="Childpk" unsaved-value="any"> <key-many-to-one name="parent" class="Parent" column="cid" /><key-property name="otherid" column="otherid" type="integer"/> </composite-id> <many-to-one name="parent" class="Parent" column="CID" cascade="save-update" not-null="true" update="false" insert="false" /><property name="name" column="name" type="string" /></class></Hibernate-mapping>
这两个hbm文件里面主要是:Parent中的<set name="children" cascade="all-delete-orphan" inverse="true" lazy="true" > <key column="CID" /> <one-to-many class="Child"/> </set> 和Child中的<many-to-one name="parent" class="Parent" column="CID" cascade="save-update" not-null="true" update="false" insert="false" />
这两个构成一对多关系中组合主键的双向关联。另外在写PO类的时候要注意hashcode和equals写的正确
parent表 字段名
类型 长度 Pid (PK) Character 10 Name Character 10 Child表 字段名
类型 长度 cid (PK) Character 10 Otherid (PK) Smallint Name Character 10 hbm文件:
Parent.hbm.xml
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE Hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd"'">http://Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd">
<Hibernate-mapping><class name="Parent" table="parent"><id name="pid" column="pid" type="string" unsaved-value="any" > <generator class="assigned"/> </id><property name="name"/><set name="children" cascade="all-delete-orphan" inverse="true" lazy="true" > <key column="CID" /> <one-to-many class="Child"/> </set></class></Hibernate-mapping>
Child.hbm.xml
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE Hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd"'">http://Hibernate.sourceforge.net/Hibernate-mapping-2.0.dtd">
<Hibernate-mapping><class name="Child" table="child"><composite-id name="childpk" class="Childpk" unsaved-value="any"> <key-many-to-one name="parent" class="Parent" column="cid" /><key-property name="otherid" column="otherid" type="integer"/> </composite-id> <many-to-one name="parent" class="Parent" column="CID" cascade="save-update" not-null="true" update="false" insert="false" /><property name="name" column="name" type="string" /></class></Hibernate-mapping>
这两个hbm文件里面主要是:Parent中的<set name="children" cascade="all-delete-orphan" inverse="true" lazy="true" > <key column="CID" /> <one-to-many class="Child"/> </set> 和Child中的<many-to-one name="parent" class="Parent" column="CID" cascade="save-update" not-null="true" update="false" insert="false" />
这两个构成一对多关系中组合主键的双向关联。另外在写PO类的时候要注意hashcode和equals写的正确
相关文章推荐
- Hibernate中如何处理一对多关系中的组合主键
- Hibernate实体关系映射:单向主键一对一关联
- Hibernate 组合主键映射
- 厂商是怎样的关系?饮料代理商该如何处理
- hibernate处理主键自增
- Java - 如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?
- 5.对与表与表之间的关系,efcore是如何处理的
- Hibernate中表与表之间关系的处理(多对多)
- Hibernate-映射关系- 基于主键映射的1<->1映射
- hibernate中的组合主键的配置
- rcp(插件开发)插件B需要引用插件A中的jar包-如何处理依赖关系
- Hibernate关系映射(5)_一对一单向联合主键关联
- 经验之谈——为事业付出时,如何处理好家庭的关系?
- 在Hibernate应用中如何处理批量更新和批量删除?
- Hibernate中处理无主键表的问题
- Hibernate处理无主键的表的映射问题
- Oracle 的一张表没有主键,如何映射Hibernate
- 如何处理人际关系
- hibernate如何自定义自增长的主键值?
- hibernate继承关系如何配置