hibernate 一对多、多对多的配置
- 一对多 <class name="Question" table="questions" dynamic-insert="true"
- dynamic-update="true">
- <id name="id" column="id">
- <generator class="native" />
- </id>
- <property name="title" />
- <property name="content" />
- <many-to-one name="user" column="user_id" class="User" />
- </class>
- <class name="User" table="users">
- <id name="id">
- <generator class="native" />
- </id>
- <property name="name" />
- <property name="phone" />
- <set name="questions" table="questions" cascade="save-update"
- inverse="false" lazy="false">
- <key column="user_id" />
- <one-to-many class="Question" />
- </set>
- </class>
user和question是一对多,在多的这一方不能设置casecade,如果设置了cascade="save-update",user删除,question因为外键关联就会报错,user也不会被删除。如果设置了cascade="delete",user删除,question也会一块删除。
不设置,user删除,question的外键user_id会置为null。如果不需要级联删除应该不加cascade。不设置的话,创建question,如果新建一个user,并为其设置了user属性,但并不会创建user
多对多
通过创建中间表users_roles 进行关联,删除其中的任何一个,中间表中包含对应id的记录都会被删掉
在user中给role设置 cascade="save-update",可以由新建user、连带着建role,但role里面没设置,就不能由新建role,来建user
- <class name="User" table="users">
- <id name="id">
- <generator class="native" />
- </id>
- <property name="name" />
- <set name="roles" table="users_roles" lazy="false"
- cascade="save-update"> //如果配置了save-update,则删除role会出现关联错误,所以如果不是必须可以不加casecade
- <key column="user_id"></key>
- <many-to-many class="Role" column="role_id">
- </many-to-many>
- </set>
- </class>
- <class name="Role" table="roles" dynamic-insert="true"
- dynamic-update="true">
- <id name="id" column="id">
- <generator class="native" />
- </id>
- <property name="name" />
- <set name="users" table="users_roles" lazy="false">
- <key column="role_id"></key>
- <many-to-many class="User" column="user_id">
- </many-to-many>
- </set>
- </class>
hibernate 一对多、多对多的配置的更多相关文章
- Hibernate一对多关联映射的配置及其级联删除问题
首先举一个简单的一对多双向关联的配置: 一的一端:QuestionType类 package com.exam.entity; import java.util.Set; public class Q ...
- Hibernate一对多(多对一)关联关系
上一篇博文总结了 Hibernate 的一对一的关联关系, 包括基于主键的单向一对一, 基于外键的单向一对一, 基于外键的双向一对一. 下面咱们说一下 Hibernate 的一对多关联关系. 其实一对 ...
- Hibernate 一对多/多对多
一对多关联(多对一): 一对多关联映射: 在多的一端添加一个外键指向一的一端,它维护的关系是一指向多 多对一关联映射: 咋多的一端加入一个外键指向一的一端,它维护的关系是多指向一 在配置文件中添加: ...
- hibernate一对多多对一双向
注意事项:一对多,多对一双向关联,在一的一方的多的getSet集合上的oneToMany上加上mappedBy.告诉hibernate由多的方一来维护关系.这也符合逻辑 ,本来外键就是在加在多的一方. ...
- hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有
今天来到混元气功 这货大概的意思就是你中有我 我中有你 ps 这里就要说到维护关系 ps写这个用了我一下午.......也是刚刚好复习到这里 顺便就写写 注意:一般都在多方维护关系,至于是用单向还是用 ...
- Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同.它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的同 ...
- hibernate一对多和多对一配置
public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<E ...
- Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)
One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotati ...
- Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射
1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...
- mybatis的执行流程 #{}和${} Mysql自增主键返回 resultMap 一对多 多对一配置
n Mybatis配置 全局配置文件SqlMapConfig.xml,配置了Mybatis的运行环境等信息. Mapper.xml文件即Sql映射文件,文件中配置了操作数据库的Sql语句.此文件需要在 ...
随机推荐
- 卡友友刷MPOS注册开通流程!
1.下载友刷APP:打开微信扫描机器背面二维码—点击右上角游览器打开 2. 注册-身份证认证-结算卡绑定:用本人手机号注册完成后,顺着进行身份认证.以及储蓄结算卡绑定.具体看下图: 3.绑定机器:选择 ...
- js Date操作
new Date(new Date().getTime() - 24 * 24 * 60 * 60 * 1000)类似C#中的AddDays,返回一个月前的时间 //时间格式化方法 v ...
- DB水平切换要点
分区健选择 数据应该怎样拆分,依照什么纬度来拆分 节点路由 应用程序写死/客户端(TDDL,cobar-client)/中间层(cobar-server) 固定分配/动态分配/混合 分片数据均衡 某些 ...
- Android新的menu实现——ActionMode
Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode.ActionMode是Android 3.0以后 ...
- asp.net 上传XML,txt 直接读取文件内容
if (GetUploadFileContent.PostedFile.InputStream.Length < 1) { Msg.Text = "请选择文件"; retur ...
- CodeForces 667A Pouring Rain
A. Pouring Rain time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- pt-online-schema-change 和 oak-online-alter-table功能对比
今天再查看文档的时候突然看到了oak-online-alter-table执行在线ddl,以前只使用过pt-online-schema.所以这里收集一些资料对比下差异,方便日后自己查阅. 一.oak- ...
- kafka 自启脚本
每次使用的时候都要手动去启动真头痛! 解决办法,自启吧! 方法一: 方法一: /etc/rc.local中添加 文件地址记得替换掉 ,我没使用这种,发现不是每次都行,就换了第二种方法 /usr/loc ...
- php 正则表达式三.模式修正
1.贪婪模式和懒惰模式, 贪婪模式:php中正则默认是贪婪模式,匹配尽可能多 的字符,比如 $pattern='/a+b/'; $subject='aaaaaaaaab,那么可能会preg_match ...
- [Android]反编译apk + eclipse中调试smali
从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...