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 多对多操作 以用户和角色为例 (一)多对多映射配置 第一步:创建两个实体类,用户和角色 第二步:让两个实体类之间互相 ...
随机推荐
- hdu 1203 I NEED A OFFER (0-1背包)
题意分析:0-1背包变形 递推公式:dp[i] = max(dp[i], 1-(1-dp[i-C])*(1-p)) /* I NEED A OFFER! Time Limit: 2000/1000 ...
- 游戏对象的变换-Transform
问题: 在给GameObject设置位置的时候,怎么保证设置的位置在摄像机的范围内? 主要看摄像机的深度轴和你的GameObject的深度轴,比如如果现在的平面是: Z–> Y, ...
- Js apply() call()使用详解
Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里 ...
- mac OS X下安装Redis及Thinkphp3.1使用Redis
一.安装Redis 1.安装Homebrew 在终端输入ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/install/maste ...
- 基于php下载文件的详解
本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢出和超时的现象. 超时的话 ...
- 如何在ARC代码中混编非ARC代码
“ios中如果arc和非arc文件混编,可以在build parses中指定compile flags,如果arc文件设为"-fobjc-arc",非arc文件设为"-f ...
- Linq--扩展方法
如果现在有一个这样的需求,求筛选出来的大于20MB的进程的和,常用的方法是写一个静态方法传进去一个ProcessData列表 比如: public static Int64 TotalMemory( ...
- jquery冒泡及阻止
javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点 ...
- docker 感性体验
Docker 1.0正式发布!1.0 版本包含很多新特性,这也是 Docker 的首个产品级的版本.从今天开始,你将会一直听到一个新的概念 —— Docker as a platform ,其组件包括 ...
- 为aps.net core项目加上全局异常捕捉和记录
在asp.net core中的方案在这里:http://stackoverflow.com/questions/30385246/can-asp-net-5-app-useerrorhandler-a ...