zoukankan      html  css  js  c++  java
  • Hibernate 异常:object references an unsaved transient instance save the transient instance before flushing

    .

    .

    .

    .

    .

    今天在对两张一对多关系的表进行增加数据时,其中主表的数据增加成功了,但是子表却没有数据,这是什么原因导致的呢?在网上查询了一番之后,找到了一个解决的办法:将主表的 .hbm.xml 中的set设置为 inverse="false" 即可。

    inverse 是反转的意思,而  inverse="false" 则代表主控方为主表,这样将由主控方来维护关联关系(控制权交给了 One 方)。也就是当主表进行更新时,关联的子表也会进行更新。

    但是做了如上的更改之后,保存的时候却又发生了以下异常:

    object references an unsaved transient instance - save the transient instance before flushing: cn.lastcc.entity.OutTrade;

    再次在网上查阅资料,解决的方法是在主控方的 set 标签上把 cascade 属性修改为"save-update" 即可。

    而 cascade 属性如何使用呢?以下是该属性的值。

    all : 所有情况下均进行关联操作。
    none:所有情况下均不进行关联操作。(默认值)
    save-update:在执行save/update/saveOrUpdate时进行关联操作。
    delete:在执行delete时进行关联操作。

    由于默认使用的是 none ,所以当主表级联更新子表时,主表处于瞬时状态,因此需要将其设置为"save-update"(这句话是推测)

  • 相关阅读:
    Leetcode 171. Excel Sheet Column Number
    Leetcode 206 Reverse Linked List
    Leetcode 147. Insertion Sort List
    小明一家人过桥
    Leetcode 125. Valid Palindrome
    Leetcode 237. Delete Node in a Linked List
    Leetcode 167 Two Sum II
    张老师的生日
    Leetcode 27. Remove Element
    Leetcode 283. Move Zeroes
  • 原文地址:https://www.cnblogs.com/0xcafebabe/p/2437604.html
Copyright © 2011-2022 走看看