2013-05-30 107 views
1

如果我想刪除一個實體與休眠我收到消息Removing a detached instance...。我知道那是因爲我的交易/會話已關閉。休眠 - 刪除對象

目前我該如何做:如果查找對象,我打開一個事務,執行查找,提交,關閉事務。刪除也是一樣。 什麼是刪除的正確方法?我是否需要始終保持事務處於打開狀態(稍後將刪除作爲查找執行)。或者我需要再次查找刪除?

回答

1

你有2種選擇:

會話保持打開更長時間,使加載的對象相同的會話可以將其刪除 - 這真的取決於你的應用程序的架構。

可選擇在刪除調用之前重新加載對象。

1

您還可以創建並執行DELETE查詢,並使用WHERE子句傳遞主鍵字段的值。在這種情況下,您不必重新連接您的實體。

+0

如果刪除「手動」,是否會丟失任何休眠功能?例如。 「級聯」註釋 - >如果我用查詢來做,子女會被刪除嗎? – jan

+1

級聯在這種情況下不起作用,您必須手動控制它。 – eternay

+0

@eternay:級聯刪除也可以在DDL級別指定。 – Olaf