【问题标题】:Hibernate object references an unsaved transient instance - save the transient instance before flushingHibernate 对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例
【发布时间】:2014-10-26 14:24:47
【问题描述】:

错误:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.SomeObject

代码:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SOMEOBJECTID", nullable = true, insertable=true, updatable=true)
public SomeObject getSomeObject() {
    return this.someObject;
}

public void setSomeObject(SomeObject someObject) {
    this.someObject= someObject;
}

我有一个表单,其中需要或不需要 someObject 的各种选项。

很遗憾,我收到上述错误

我也试过CascadeType.ALL,但是

org.hibernate.PropertyValueException: not-null property references a null or transient value: com.SomeObject

原因是什么?显然我设置了 nullable = true (也在数据库中),即使我有这个错误。有什么想法吗?

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    假设您有一个Order 实体,它与OneToMany 实体有OneToMany 关系。现在,如果您没有设置 CASCADE 属性,那么当您尝试像这样保存 Order 实体时:

    Order order = new Order();
    OrderLine orderLine = new OrderLine();
    order.setOrderLine(orderLine);
    session.save(order);
    

    然后你会得到一个异常说:

    org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing
    

    要解决此问题,您必须先保存OrderLine,然后再保存Order

    session.save(orderLine);
    session.save(order);
    

    现在,如果您有双向关系,并且如果您尝试设置 CASCADE 属性并执行相同的操作,如下所示:

    Order order = new Order();
    OrderLine orderLine = new OrderLine();
    order.setOrderLine(orderLine);
    session.save(orderLine);
    session.save(order);
    

    那么你会得到一个异常:

    org.hibernate.PropertyValueException: not-null property references a null or transient value
    

    因为orderLine 具有order 的属性,在这种情况下为null,因为我们没有设置值。因此,要解决此问题,您需要通过添加以下额外行来正确维护双方的关系:

    orderLine.setOrder(order);
    

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 1970-01-01
      • 2021-03-03
      • 2013-01-04
      • 2016-02-24
      • 1970-01-01
      • 2012-02-27
      • 2019-01-14
      • 2012-03-21
      相关资源
      最近更新 更多