簡體   English   中英

hibernate.TransientObjectException:對象引用了一個未保存的瞬態實例-在刷新之前保存瞬態實例-休眠升級后

[英]hibernate.TransientObjectException:object references an unsaved transient instance-save the transient instance before flushing-after hibernate upgrade

升級到休眠3.6.0.FINAL后出現錯誤,但它與3.3.2.GA一起使用

我的問題類似於https://forum.hibernate.org/viewtopic.php?p=2452617

在那種情況下,他們設置了cascade =“ all”來解決問題。

但是就我而言,我不想更新引用的實體。 我沒有雙向關系,這只是一對多。 這里發布的大多數類似問題,建議全部進行級聯,但在我的情況下,它不想級聯。

我的地圖

<class name="org.hmil.ams.com.model.MyUserDetails" table="CMUPMST_TB">
        <id name="username" column="UPMST_USER_NAME" type="java.lang.String"
            unsaved-value="0">
            <generator class="assigned" />
        </id>
        <property name="password" column="UPMST_USER_PWD" type="java.lang.String"
            not-null="true" />
        <property name="UPMST_ROLE_ID" type="long" not-null="true" />

        <many-to-one name="UPMST_ROLE" fetch="join" cascade="none"
            insert="false" update="false"         class="org.hmil.ams.setup.model.CodeMst">
            <column name="UPMST_ROLE_ID" />
        </many-to-one>
</class>

我正在使用Spring BlazeDS / flex,我的對象已分離。 現在,當我嘗試保存新創建的MyUserDetails實體時,它表示存在CodeMst的瞬時實例,(我不更新實體,但是在反序列化新創建的MyUserDetail時可能是BlazeDS,它實例化了引用的CodeMst實體, null值,這可能是導致問題的原因,但是在升級之前,相同的代碼仍在工作)解決此問題的任何幫助。

我實際上在這里找到了解決方案: https : //hibernate.atlassian.net/browse/HHH-5908

部署補丁。 我剛剛為TypeHelper.findDirty方法添加了相同的修復程序(第287行)

OLD: final boolean[][] includeColumns,
NEW: final boolean[] includeProperties, final boolean[][] includeColumns,

然后在AbstractEntityPersister.findDirty中(第3408行):

OLD: propertyColumnUpdateable,
NEW: getPropertyUpdateability(), propertyColumnUpdateable,

更新:打破此問題的休眠修復程序是https://hibernate.atlassian.net/browse/HHH-2350

暫無
暫無

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

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