hibernate 多对多
Hibernate
Hibernate多对多关联映射通常别拆分成两个多对一关联映射
1、 下面的HostBean、UserBean、UserHostBean,UserHostBean是两个表之间的关联表,分别跟HostBean和UserBean都是多对一的关联关系,可以发现中间表始终是多的一端。
2、因此配置文件中是这样的,在中间表UserHostBean中
<many-to-one name="user" class="UserBean" not-null="true" lazy="false">
<column name="user_id" />
</many-to-one>
<many-to-one name="host" class="HostBean" not-null="true" lazy="false">
<column name="host_id" />
</many-to-one>
分别设置中间表的两个关联字段;在另外本身是多对多关联的两个表中
<set name = "users" lazy="false" cascade="save-update" inverse="true">
<key column="user_id"></key>
<one-to-many class="UserHostBean"/>
</set>
<set name="hosts" lazy="false" cascade="save-update" inverse="true">
<key column="host_id"></key>
<one-to-many class="UserHostBean"/>
</set>
这个column:user_id是由一指向多的那端的一个维护关系字段,因此跟many-to-one中的关联字段名称要一致
3、 关联的CRUD操作:
Create:原则还是跟多对一样,先保存多的一端然后再保存一端,分别setHost和setUser,从而在这两者间建立关联
Example:
HostBean:
<hibernate-mapping>
<class name="HostBean" table="t_host">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<set name = "users" lazy="false" cascade="save-update" inverse="true">
<key column="user_id"></key>
<one-to-many class="UserHostBean"/>
</set>
</class>
</hibernate-mapping>
UserBean
<hibernate-mapping>
<class name="UserBean" table="users">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<set name="hosts" lazy="false" cascade="save-update" inverse="true">
<key column="host_id"></key>
<one-to-many class="UserHostBean"/>
</set>
</class>
</hibernate-mapping>
UserHostBean
<hibernate-mapping>
<class name="UserHostBean" table="t_user_host">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="lastVisitDate" column="last_visit_date" type="string"/>
<many-to-one name="user" class="UserBean" not-null="true" lazy="false">
<column name="user_id" />
</many-to-one>
<many-to-one name="host" class="HostBean" not-null="true" lazy="false">
<column name="host_id" />
</many-to-one>
</class>
</hibernate-mapping>
hibernate 多对多的更多相关文章
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- hibernate多对一双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- hibernate多对一单向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate多对多关系映射(建表)
下边讲述Hibernate多对多关系映射. 多对多关系的表的结构为: 两个实体表,还包含一个关系表,关系表为复合主键,如果要使用Hibernate多对多关系映射,则关系表必须只包含两个字段,如果生成了 ...
- atitit.atitit.hb many2one relate hibernate 多对一关联配置..
atitit.atitit.hb many2one relate hibernate 多对一关联配置.. 1. 多对一单向 @ManyToOne 1 1. 其中@JoinColumn 注解 2 2. ...
- hibernate多对一单向外键
hibernate多对一单向外键: 描述:
- Hibernate多对一ManytoOne
------------------------Hibernate多对一ManytoOne 要点: ManytoOne配置在多端 可以配置级联操作 @ManyToOne(cascade=Cascade ...
- hibernate 多对多一个对象出现多条记录问题
hibernate 多对多时,当须要依据它关联的对象查找的时候,会出现一个对象有多条记录的问题 用 left join fetch 抓取查询的时候还是会出现这问题,是由于主表在关联表中有多条记录 用 ...
- Hibernate多对多操作
---------------------siwuxie095 Hibernate 多对多操作 以用户和角色为例 (一)多对多映射配置 第一步:创建两个实体类,用户和角色 第二步:让两个实体类之间互相 ...
随机推荐
- 怎样把function中的arguments变成普通数组
当我们在写一个具有处理可变长度参数的函数时,需要对arguments做一些操作.但是arguments它并不是一个数组,没有数组的各种操作,而且,JS的严格模式中不允许更改它的值. 这时我们需要将它的 ...
- hdu 1686 Oulipo KMP匹配次数统计
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 分析:典型的KMP算法,统计字符串匹配的次数. 用Next数组压缩时间复杂度,要做一些修改. / ...
- DNA RNA
核糖体没有DNA,但是有RNA(rRNA 核糖体RNA) 有DNA的细胞器是线粒体和叶绿体.
- ARC小知识
ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管 ...
- iOS 非ARC基本内存管理系列总结6 -设计微博模型
设计简单的微博模型:用User类和Status类来模拟实现 在非ARC机制下有两种方式,两者没有太大的区别之所以写了两种只是为了方便学习和对比两种写法! 第一种:没有使用atuorelease和自动释 ...
- CentOS学习笔记--程序管理
程序管理 一个程序被加载到内存当中运行,那么在内存内的那个数据就被称为程序(process).程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在.那么系统的程序有哪些状态?不同 ...
- 基础学习总结(四)--SQLite
1. SQLiteDatabase 操作SQLite数据库的类.可以执行SQL语句,对数据库进行增.删.查.改的操作.也可以进行transaction的控制.很多类对数据库的操作最终都是通过SQL ...
- C string 函数大全
PS:本文包含了大部分strings函数的说明,并附带举例说明.本来想自己整理一下的,发现已经有前辈整理过了,就转了过来.修改了原文一些源码的问题,主要是用char *字义字符串的问题,导致程序运行时 ...
- openerp 经典收藏 通过view实现字段的只读、隐藏操作(转载)
通过view实现字段的只读.隐藏操作 原文地址:http://cn.openerp.cn/view_groups/ 在OpenERP V7视图(ir.ui.view)多了一个非常有用的字段(group ...
- iOS 进阶 第八天(0407)
0407 UIPickerView.UIDatePicker和UIToolBar请参见视频和代码 pch文件 #ifdef __OBJC__ //在这里面写oc的引用,比如一些oc的头文件或者NSLo ...