2 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
在版本 4.2 之前,hibernate 會(huì)忽略異?!皞鬟f給驅(qū)逐的非實(shí)體對象實(shí)例”,該異常現(xiàn)在會(huì)拋出:
java.lang.IllegalArgumentException:傳遞給驅(qū)逐的非實(shí)體對象實(shí)例。
在 4.2 之前的 hibernate 版本中,由于DefaultEvictEventListener.java#L91-L94沒有 else 部分,因此它被忽略。
從版本 4.2 開始,添加了 else 部分,如我們在DefaultEvictEventListener.java#L99-L115中看到的那樣。
在研究這個(gè)錯(cuò)誤之后,我在網(wǎng)上找到的唯一建議是我們捕獲并忽略這個(gè)異常。
然而,即使它不是一個(gè)完美的解決方案,我認(rèn)為,省略導(dǎo)致異常的 evict 調(diào)用是我更喜歡的,因?yàn)槲铱梢詫⑵浞旁诰彺嬷小?/p>

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
Hibernate 檢查您傳遞的對象是實(shí)體,因此它不想逐出或分離任何對象(在我的例子中是 ArrayList)或除實(shí)體之外的 null。
我更喜歡對解決方案進(jìn)行空檢查或類型檢查,而不是捕獲并忽略
添加回答
舉報(bào)