分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Hibernate--inverse反转

发布时间:2023-09-06 01:14责任编辑:沈小雨关键词:Hibernate

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反转

原文地址:http://www.cnblogs.com/roxy/p/7609473.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved