zoukankan      html  css  js  c++  java
  • 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
      在维护两表之间的关系时,可以避免做额外的更新操作
  • 相关阅读:
    caffe BUG
    Ubuntu安装低版本gcc
    OpenCV的CV :: findHomography运行时错误
    opencv中使用 SURF算法匹配的遇到的问题
    C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法 --转
    SIFI与surf
    opencv复习
    opencv老版本的IplImage使用
    python学习笔记-对象持久化保存与恢复
    Styles and Themes
  • 原文地址:https://www.cnblogs.com/roxy/p/7609473.html
Copyright © 2011-2022 走看看