Hibernate inverse反转
inverse:
inverse:
指定由哪一方来维护之间的关联关系
false默认,表示不放弃,是主动放
true:表示把关联关系的维护反转(放弃),对集合对象的修改不会被反映到数据库中 容易出现的问题:
如果两端都设置控制反转,就会重复更新,报告联合主键重复的错误
inverse和cascade的区别:
inverse决定是否把对对象中集合的改动反映到数据库中,所以inverse只对集合起作用
即只对one-to-many和many-to-one有效
hibernate提供的集合元素包括:<set><map><list><array><properties>
cascade决定是否把对对象的改动反映到数据库中,所以cascade对所有的关联关系都起作用
修改配置文件:
<set name="orders" cascade="save-update, delete" inverse="true">
<key column="customer_id"></key>
<one-to-many class="com.roxy.hibernate.pojo.Order"/>
</set> inverse必须配置在一端 cascade配置在那一端,就保存哪一端
SQL语句与分析:
Hibernate:
insert
into
t_customer
(c_name, c_gender, c_age, c_level)
values
(?, ?, ?, ?) ----- 向customer中插入数据
Hibernate:
insert
into
t_order
(orderno, product_name, customer_id)
values
(?, ?, ?)
----- 向order中插入数据
Hibernate:
insert
into
t_order
(orderno, product_name, customer_id)
values
(?, ?, ?)
----- 向order中插入数据
查看数据库表:


和前一篇博文的结果进行对比: SQL语句并没有在插入数据之后进行更新操作
在向数据库插入数据时,并没有维护customer和order表之间的关联,即order中的外键值为null
在维护两表之间的关系时,可以避免做额外的更新操作
Hibernate inverse反转的更多相关文章
- hibernate的反转引擎生成两个实体类的问题
在使用myeclipse中自带的hibernate 进行jsp开发时候遇到了这个问题.使用hibernate的反转引擎从数据库生成生成实体类,一个表生成了两个类,xx.java和xxId.java . ...
- hibernate inverse属性的作用
hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的.inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联由对方控制.见例子: 一 ...
- Hibernate inverse用法(转载)
出处:http://blog.csdn.net/xiaoxian8023/article/details/15380529 一.Inverse是hibernate双向关系中的基本概念.inverse的 ...
- hibernate:inverse、cascade,一对多、多对多详解
1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所 ...
- hibernate inverse属性
修改街道对应的区道信息: 修改后会发现程序执行了两次修改操作: 原因: 区道与街道是一对多的关系: 由于Hibernate是双向维护外键,所以当修改区道中的街道时,会修改一次外键:在修改街道中的区道时 ...
- hibernate -inverse
one to many inverse=false只能设置维护关联关系的多的一方, inverse属性: 默认为false,表示本方维护关联关系. 如果为true,表示本方不维护关联关系(并不意味着对 ...
- 三大框架之hibernate的反转
选择工程.包名 Finish
- java之hibernate之 cascade和inverse
1.Cascade是级联动作,在many_to_one中如果使用cascade可以级联操作关联对象,如下代码可以级联保存Category对象. 在Book的映射文件设置 <many-to-one ...
- hibernate中cascade属性以及inverse属性
级联操作 cascadecascade的常用属性值 none 默认值 不做任何变动 save-update 保存或修改 delete 删除 all 包含save-update 和delete等行为 c ...
随机推荐
- Linux rm的一次误用
今天在Linux下误用了一次rm -rf,经历惨痛,记录一下. 原因是我删除了一个文件到回收站,然后点错了将home下的所有东西都删到了回收站,然后我又从回收站拷贝回home目录而不是使用恢复,因为h ...
- HDU 4864
http://acm.hdu.edu.cn/showproblem.php?pid=4864 #include <iostream> #include <cstdio> #in ...
- Xcode清理垃圾
摘抄自https://blog.csdn.net/hu434587115/article/details/54602449 ~/Library/Developer/Xcode/DerivedData/ ...
- Tensorflow中的滑动平均模型
原文链接 在Tensorflow的教程里面,使用梯度下降算法训练神经网络时,都会提到一个使模型更加健壮的策略,即滑动平均模型. 基本思想 在使用梯度下降算法训练模型时,每次更新权重时,为每个权重维护一 ...
- HihoCoder - 1781: Another Bubble Sort (冒泡排序&逆序对)
Sample Input 3 9 8 7 5 1 9 2 6 4 3 1 2 3 4 5 6 7 8 9 9 8 7 5 1 9 2 6 4 3 1 2 5 4 3 6 7 8 9 9 8 7 5 1 ...
- 第三周作业3——Bug Report
作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957 要求1: 准备工作:利用老师提供的git 命令,批量pull所有 ...
- 《DSP using MATLAB》Problem 4.23
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- spring boot sso 学习资源
diy: 关键字: springboot sso:public boolean preHandle(HttpServletRequest request, HttpServletResponse re ...
- python lambda匿名函数
Python的一个很重要的方面就是:函数式编程(functional programming),即可以再原本传递参数和值的地方传递函数. lambda x: x%3 == 0 和以下等价: def b ...
- python functools.partial
functools.partial 用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待 冻结部分函数位置函数或关键字参数,简化函数,更少更灵活的函数参数调用 refer ...