Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在刷新之前保存临时实例_Hibernate - Fatal编程技术网

Hibernate 在刷新之前保存临时实例

Hibernate 在刷新之前保存临时实例,hibernate,Hibernate,异常:对象引用未保存的临时实例-在刷新之前保存临时实例:Child 如何重现问题: 1.Hibernate正在加载实体“父”。属性“child”为空 2.“父对象”在屏幕上呈现,之后“子对象”属性自动实例化。所以我有下面的图表: Parent.child != null Parent.child.childId = null Parent.child.childKey = "" Parent.child.childName = "" 问题:当childId=null时,如何强制休眠忽略更新或插

异常:对象引用未保存的临时实例-在刷新之前保存临时实例:Child

如何重现问题: 1.Hibernate正在加载实体“父”。属性“child”为空 2.“父对象”在屏幕上呈现,之后“子对象”属性自动实例化。所以我有下面的图表:

Parent.child != null
Parent.child.childId = null
Parent.child.childKey = ""
Parent.child.childName = ""
问题:当childId=null时,如何强制休眠忽略更新或插入子实体? 如果是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来实现这一点,但我相信您会在参考资料中找到它

使用“级联”设置。我不知道如何使用xml实现这一点,但我相信您会在参考中找到它。据我理解您的问题,您的表示层向显示的父对象添加了一个不必要的子对象,您希望Hibernate忽略它


如果是这样的话,那么表示层似乎有责任摆脱这个孩子。因此,最好在将父对象传递回Hibernate之前,通过删除表示层中的子对象来“清理”父对象。

据我所知,您的表示层会将不必要的子对象添加到正在显示的父对象中,您希望Hibernate忽略它


如果是这样的话,那么表示层似乎有责任摆脱这个孩子。因此,最好在将其传递回Hibernate之前,通过移除表示层中的子级来“清理”父级。Spring会自动实例化子对象,如果可能的话,我会保留这个特性。因此,我找到了一种方法,教冬眠者忽略这些对象。@eugenn:再一次:这不是冬眠的责任。如果将不正确的模型传递给持久化层,持久化层将不正确地持久化它。因此,您应该删除控制器中的这些不正确的child。您是对的。Spring会自动实例化子对象,如果可能的话,我会保留这个特性。因此,我找到了一种方法,教冬眠者忽略这些对象。@eugenn:再一次:这不是冬眠的责任。如果将不正确的模型传递给持久化层,持久化层将不正确地持久化它。因此,您应该在控制器中删除这些不正确的child。这不是我所期望的那样有效。hibernate抛出TransientObject异常:抱歉误解了您的问题。我同意axtavt的观点。Hibernate不是这样做的地方。如果你必须的话,你可以考虑拦截者,虽然我不确定他们会为此而工作。这不是我所期望的那样有效。hibernate抛出TransientObject异常:抱歉误解了您的问题。我同意axtavt的观点。Hibernate不是这样做的地方。如果你必须的话,你可以考虑拦截者,虽然我不确定他们会为此而工作。