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