我有以下設置:存在各種實體(Projects
,Tests
,Users
),然後有TestReports
。 TestReports
引用其他實體以及文件系統中的一些額外數據。在JPA/Hibernate中引用已刪除的實體
生成報告並且從不刪除(用於審覈目的)。但是,其他實體可以被刪除。這導致情況,當報告引用一些被刪除的實體時。從業務角度來看,這是可以的,報告可以只顯示[deleted id123]
而不是刪除實體標籤,這樣可以。但是,我得到javax.persistence.EntityNotFoundException
,當我嘗試加載引用刪除實體的報告。
有沒有辦法告訴Hibernate/JPA在這種情況下創建帶有ID和一些isDeleted
標誌的幻象對象?我在Hibernate Envers文檔中發現它們在遍歷修訂歷史時支持類似的內容,但我還沒有找到在「普通」實體中使用它的方法。
從Envers文檔:
第二個參數,selectDeletedEntities,則指定的修改,其中,所述實體被刪除應包含在結果中。如果是,那麼這些實體將具有修訂類型DEL以及除id,null之外的所有字段。
我知道解決辦法的通過對所有對象引入deleted
標誌和使用軟缺失,如果不是實際的刪除。但是這增加了額外的開銷,我想避免。
謝謝,這似乎幾乎是我想要的。你知道如果有一個標準的方式如何區分實際沒有參考和忽略未找到? – Michal 2012-08-08 09:51:07
我不知道,我不認爲休眠提供這樣的設施:S。 – Augusto 2012-08-08 09:59:04