如果我想刪除一個實體與休眠我收到消息Removing a detached instance...
。我知道那是因爲我的交易/會話已關閉。休眠 - 刪除對象
目前我該如何做:如果查找對象,我打開一個事務,執行查找,提交,關閉事務。刪除也是一樣。 什麼是刪除的正確方法?我是否需要始終保持事務處於打開狀態(稍後將刪除作爲查找執行)。或者我需要再次查找刪除?
如果我想刪除一個實體與休眠我收到消息Removing a detached instance...
。我知道那是因爲我的交易/會話已關閉。休眠 - 刪除對象
目前我該如何做:如果查找對象,我打開一個事務,執行查找,提交,關閉事務。刪除也是一樣。 什麼是刪除的正確方法?我是否需要始終保持事務處於打開狀態(稍後將刪除作爲查找執行)。或者我需要再次查找刪除?
你有2種選擇:
會話保持打開更長時間,使加載的對象相同的會話可以將其刪除 - 這真的取決於你的應用程序的架構。
可選擇在刪除調用之前重新加載對象。
您還可以創建並執行DELETE
查詢,並使用WHERE
子句傳遞主鍵字段的值。在這種情況下,您不必重新連接您的實體。
如果刪除「手動」,是否會丟失任何休眠功能?例如。 「級聯」註釋 - >如果我用查詢來做,子女會被刪除嗎? – jan
級聯在這種情況下不起作用,您必須手動控制它。 – eternay
@eternay:級聯刪除也可以在DDL級別指定。 – Olaf