Hibernate--inverse反转
Posted 耍流氓的兔兔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 inverse和cascade的作用和区别
Hibernate inverse=''true" 和获得一对多时的问题
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化
2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。(代码片段