hibernate 對(duì)象狀態(tài)異常:object references an unsaved transient instance - save the transient instance befor

今天使用JPA的時(shí)候,實(shí)體類屬性使用了@ManyToOne,引導(dǎo)的那個(gè)ONE對(duì)象所有屬性都是NULL,所以造成這個(gè)異常(沒(méi)有持久化,就相當(dāng)于new了一個(gè)新對(duì)象,但是在對(duì)象保存之前將這個(gè)對(duì)象保存在一個(gè)new的另一個(gè)新對(duì)象)。

解決方法
在@ManyToOne注解上加上cascade={CascadeType.PERSIST,CascadeType.MERGE}

    @ManyToOne(fetch = FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE})
    @JoinColumn(name = "docker_id")
    private Docker docker;

而JPA 中定義了四種 CASCADE 類型:

* PERSIST:持久保存擁有方實(shí)體時(shí),也會(huì)持久保存該實(shí)體的所有相關(guān)數(shù)據(jù)。
* MERGE:將分離的實(shí)體重新合并到活動(dòng)的持久性上下文時(shí),也會(huì)合并該實(shí)體的所有相關(guān)數(shù)據(jù)。
* REMOVE:刪除一個(gè)實(shí)體時(shí),也會(huì)刪除該實(shí)體的所有相關(guān)數(shù)據(jù)。
* ALL:以上都適用。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容