Hibernate中如何处理一对多关系中的组合主键

原创 2004年07月06日 11:57:00

前段时间碰到这个问题,主要是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"
    "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"
    "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中多主键对象映射配置

本身多主键配置   多主键many-to-many映射配置:多主键用标签中的标签表示   ...
  • q1144658074
  • q1144658074
  • 2014年02月26日 13:21
  • 1136

Hibernate一方对多方非主键的关联

CREATE TABLE users( id VARCHAR(32) PRIMARY KEY, NAME VARCHAR(50), PASSWORD VARCHAR(32...
  • xanlv
  • xanlv
  • 2017年03月28日 23:33
  • 235

《Hibernate学习笔记七》一对一联合主键的关联

《Hibernate学习笔记七》一对一联合主键的关联前面我们讲解了一对一外键关联和一对一主键的关联,这篇博文介绍下联合主键的关联关系。先回顾下联合主键,可以参考以前写的这篇博文:http://blog...
  • u010412719
  • u010412719
  • 2016年05月02日 22:28
  • 851

hibernate 中注解 一对多 主键中mappedBy的具体使用及其含义

1、@OneToMany(mapped=“由One的一方指向Many的一方,并且,这个属性应该等于Many的一方中含有One类的属性的属性名,否则会出错啦 ”) 如: 在ClassPO中: ...
  • l_feilong
  • l_feilong
  • 2016年04月10日 11:11
  • 2681

Hibernate 映射文件更新

  • qq_16103331
  • qq_16103331
  • 2016年09月21日 16:54
  • 166

Hibernate的安装配置

引入 模型不匹配(阻抗不匹配)Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。 解决办法1使用JDBC手工转换。 2使用ORM(O...
  • cckevincyh
  • cckevincyh
  • 2017年01月31日 13:43
  • 856

Hibernate中如何处理一对多关系中的组合主键

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 05:52
  • 111

Hibernate中一对多和多对一关系

http://blog.sina.com.cn/s/blog_4b5bc0110100z483.html 1、单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用...
  • zxygww
  • zxygww
  • 2016年03月25日 19:59
  • 3312

hibernate 主控端与被控端

hibernate使用过程中,必然会使用到 @@OneToMany(一对多) 或者 @ManyToOne(多对一),但是对于这个关系:多对一或者是一对多,到底该由哪一端来维护呢? 主控端:主动维护关...
  • szyyyp
  • szyyyp
  • 2016年05月12日 15:55
  • 805

hibernate--马

第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHe...
  • lhf198484
  • lhf198484
  • 2016年10月07日 10:03
  • 489
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate中如何处理一对多关系中的组合主键
举报原因:
原因补充:

(最多只允许输入30个字)