有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate oneToMany对象引用未保存的临时实例

我有一张有一对一关系的桌子:

<hibernate-mapping>
    <class name="com.al6.jtob.data.Lsell" table="LSELL" >
    ...
       <many-to-one name="stock" class="com.al6.jtob.data.Stock" insert="false" update="false">
          <column name="IDITEM" />
          <column name="IDWAREHOUSE" />
       </many-to-one>
    ...
    </class>
</hibernate-mapping>

StockID由(IDITEM、IDWAREHOUSE)组成

当我加载现有的LSELL对象时,它工作得很好。 但是,当我创建新的LSELL对象时,出现以下错误:

Caused by: javax.ejb.EJBException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.al6.jtob.data.Stock

我不想更新或保存任何新的“股票”到数据库中,它只是一个只读数据。所有的库存数据都是完整和充分的。 目标只是在显示“Lsell”时获取“Lsell”的“stock”


共 (1) 个答案

  1. # 1 楼答案

    您忘记在关系映射中声明CascadeType。您必须将cascade=all放在映射标记中,因为CascadeType将实体转换从父级传播到子级。例如,如果持久化父实体,则引用的实体也会在刷新之前持久化

    <one-to-many name="lsell" class="com.al6.jtob.data.Lsell" cascade="all">
       ...
    </one-to-many>