簡體   English   中英

在刷新之前保存臨時實例

[英]save the transient instance before flushing

例外:對象引用了一個未保存的臨時實例-在刷新之前保存該臨時實例:子級

如何重現問題 :1.休眠是加載實體“父母”。 屬性“ child”為null2。在屏幕上呈現“ Parent”,然后自動實例化“ child”屬性。 所以我有下面的圖:

Parent.child != null
Parent.child.childId = null
Parent.child.childKey = ""
Parent.child.childName = ""

問題 :當childId = null時,如何強制Hibernate忽略更新或插入Child實體? 如果childId!= null,我只想創建關系。

<hibernate-mapping>
  <class name="com.test.Parent"
    entity-name="ParentObject" table="parent"
    dynamic-insert="false" dynamic-update="true" optimistic-lock="version">
    <id name="rowId" type="long">
      <column name="RowID" />
      <generator class="native" />
    </id>
    <version name="versionSequence" type="integer"
      unsaved-value="null" generated="never" insert="false">
      <column name="VersionSequence" />
    </version>
    <many-to-one name="child" entity-name="Child" fetch="select"
      optimistic-lock="true" embed-xml="false" update="true" insert="false">
      <column name="ChildID" />
    </many-to-one>
    <property name="dateCreated" type="timestamp">
      <column name="DateCreated" length="0" />
    </property>
    <property name="dateUpdated" type="timestamp" update="false">
      <column name="DateUpdated" length="0" />
    </property>
  </class>
</hibernate-mapping>

<hibernate-mapping>
  <class name="com.Child"
    entity-name="Child" table="Child" dynamic-insert="false"
    dynamic-update="true" optimistic-lock="version">
    <id name="childId" type="long" >
      <column name="ChildID" />
      <generator class="native" />
    </id>
    <version name="versionSequence" type="integer" insert="false"
      generated="never" >
      <column name="VersionSequence" />
    </version>
    <property name="childKey" type="string" >
      <column name="ChildKey" length="20" />
    </property>
    <property name="childName" type="string" >
      <column name="ChildName" length="30" />
    </property>
    <property name="childNumber" type="string" >
      <column name="ChildNumber" />
    </property>
    <property name="dateCreated" type="timestamp">
      <column name="DateCreated" />
    </property>
    <property name="dateUpdated" type="timestamp" update="false">
      <column name="DateUpdated" />
    </property>
  </class>
</hibernate-mapping>

使用“級聯”設置。 不知道如何使用xml進行操作,但是我敢肯定您會在參考資料中找到它

據我了解您的問題,您的表示層將不必要的子項添加到要顯示的Parent對象中,並且您希望Hibernate忽略它。

如果是這樣,看起來表現層有責任擺脫那個孩子。 因此,這將是更好的“消毒”的Parent通過將其回之前移除表示層內部的孩子休眠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM