我用Hibernate使用JPA 2。有兩個實體類,CardElement
和IdentityDocumentKind
。最後一個是第一個的繼承實體。使用SINGLE_TABLE繼承策略。當我嘗試通過查詢from CardElement where id = '123456'
選擇父類的一個實例,下面的錯誤occures:如何獲取父實體?
對象ID爲:123456是指定的子類的沒有: org.cp.cardsystem.CardElement(鑑別:SDocClass)
我沒有「SDocClass」鑑別符值的子類。實際上,在開發IdentityDocumentKind
時,CardElement
的等級查詢被廣泛用於整個應用程序。因此,我無法爲每個鑑別符值創建CardElement
的子類,並在所有現有查詢中將CardElement
替換爲它。這對我來說花費太多的努力。當使用SINGLE_TABLE繼承策略時,有沒有辦法實例化父實體類?
是的,你已經正確理解我的問題。但使用這種數據庫視圖而不是表格會使所有帶有未映射辨別器的記錄無法通過CardElement訪問。 CardElement實體類提供處理所有現有數據的可能性非常重要。 – vect 2012-08-07 04:59:17
但是,您希望如何提供訪問權限?你不想創建相應的孩子班,那麼你應該如何給予訪問?爲什麼你不能爲每個鑑別器的值創建一個子對象(即使它只是一個擴展你的父對象的空類也沒問題),或者,無論IdentityDocumentKind如何,都忘記繼承。只要將該字段視爲屬性 – 2012-08-07 06:35:58
在創建IdentityDocumantKind時,我認爲可以處理具有未映射鑑別符的記錄作爲CardElement實例。我可以爲每個鑑別器值創建繼承實體。但是,在CardElement已經用於訪問數據的所有應用程序中,需要重構大量代碼。這個代碼在開發IdentityDocumentKind時已經存在。 – vect 2012-08-07 07:22:12