hibernate的多对多关系中对inverse属性的设置
现有user,role和user-role表,user-role为两表中间的关系表,两表为【多对多关系】
现给role(被动)设置inverse="true"(放弃对关系的维护,即role表放弃对关系表user-role的维护),
当role.getUSERS().add(user1)时不会在关系表user-role中生成记录,
当user1.getRoles().add(role1)时就会在关系表user-role中生成记录。
但是这并不妨碍casecade给user表role表级联更新。
需要注意:
当两端都是inverse= "false"或是default值时,在代码对关系显示的维护也是不对的,会导致在关系表中插入两次关系。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'PRIMARY'
当关系的两头都用inverse="true"也是不对的,就会导致任何操作都不触发对关系表的操作。
现有Customer,LinkMan表,为【一对多关系】
public void demo1(){
Session session = HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
Customer customer1 = new Customer();
customer1.setCust_name("孙悟空");
LinkMan linkMan1 = new LinkMan();
linkMan1.setLkm_name("太上老君");
customer1.getLinkManSet().add(linkMan1);
// 条件在Customer.hbm.xml上的set中配置了cascade="save-update" inverse="true"
session.save(customer); // 客户会插入到数据库,因为设置了级联sava-update所以联系人linkMan1也会插入到数据库中,但是因为设置了inverse="true"customer表放弃了对外键的维护权(即LinkMan表里面的外键link_cust_id为null)
tx.commit();
}
hibernate的多对多关系中对inverse属性的设置相关推荐
- Hibernate 学习心得1: 多对多关系中,中间表无法插入数据。
Hibernate 学习心得之一 多对多关系中,中间表无法插入数据. 最近学习 spring4+hibernate4,学习中遇到了很多坑. 在这里我来说说我遇到的坑,这里就不介绍如何spring如何集 ...
- one-many和many-one的关系中的inverse的详解
在one-many和many-one的关系中的inverse的详解. 1.现在假设有两个类Customer与Order,一个Customer可以有多个Order 2. 如果在Customer.hbm. ...
- Hibernate中的inverse属性和cascade属性
假设Customer和Orders 建立一对多的双向关联. inverse 属性: //加载持久化对象 Customer customer = (Customer) session.load(Cust ...
- c语言中边框所占两列一行,css中的border-collapse属性如何设置表格边框线?(代码示例)...
css中的border-collapse属性如何设置表格边框线?本篇文章就给大家介绍css中的border-collapse属性是什么? border-collapse属性设置表格边框线的方法.有一定 ...
- java中使用QBC的好处_使用QBC的方式应用多对多关系中的查询
关系描述 User实体和Group实体是多对多的关系,实体和表的对应关系如下: Java Bean 表 User tb_user Group tb_group tb_user表的字为:ID,UserN ...
- mysql 多对多建表_mysql – 为什么在多对多关系中创建一个新表?
我正在创建一个数据库来存储有关乐器的信息.我在MySQL工作台中使用EER图来可视化每个表之间的关系. 当我创建多对多(n:m)关系时,会创建一个新表,其中包含新关系中涉及的表的主键.其他关系,如一对 ...
- EF多对多关系中如何利用关系表(EF4.1 Many to Many involves junction table details)
一般的多对多关系数据库表: Mapping代码: Code Snippet modelBuilder.Entity<BlogPost>() .HasMany(b => b.Categ ...
- 网页中a标签属性统一设置新窗口打开
原文地址:http://www.cnblogs.com/942267027wzmblog/p/5624173.html 在开发过程中,我们往往想在页面中,给<a>设置一个统一的默认格式,例 ...
- php textarea 默认值,html中的textarea属性大全(设置默认值 高度自适应 获取内容 限制输入字数 placeholder)...
1.textarea设置默认值 HTML: 此段代码设置一个textarea文本框 并且设置为隐藏 2.textarea高度自适应 今天需要些一个回复评论的页面,设计师给的初始界面就是一个只有一行的框 ...
最新文章
- 菜鸟也来学习ORACLE(1)_linux下安装oracle 11g
- GridView的DataKeyNames属性 转载的
- zip压缩与解压缩示例
- php去除最后一位,php字符串怎么去除最后一个字符
- 案例实作图解.Net Entity Framework 教程
- 如何制作提交按钮,实现多条件筛选
- 点击延迟_300ms 延迟是什么,如何解决
- TortoiseGit- 创建本地新分支,提交推送到远程,本地新分支合并到工作分支,提交到远程工作分支等。...
- jms activemq_带有ActiveMQ的JMS
- 基础组件完善的今天,如何通过业务组件提效?
- SCRF的简介及防护手段
- js获取日期实例之昨天今天和明天、后天
- 小米台灯底座接口很松_小米新品,米家充电台灯,续航40小时,不足百元,米粉:买买买...
- Linux Shell处理文本最常用的工具大盘点
- Flutter高级第2篇:JSON的序列化和反序列化、创建模型类转换Json数据
- 如何在打开谷歌的时候强制跳转google.com
- 考勤系统 服务器管理,考勤管理系统ZKNet Web Server管理
- Fish for mac安装 fish+on my fish ---(powerline主题)美化
- linux进入运行exe命令,在Deepin V20系统中打开运行exe文件的两种方法
- 0402网络基础--查看及测试网络连通、IP地址、IPv6、子网划分