2011-05-26 75 views
2

我有一個基類實體類,它將在超過一百個子類中派生。是否有可能使對象的所有字段默認爲@Transient

爲了確保持久字段將是我想要的字段(而不是該基類的用戶),我想聲明此JPA實體將所有字段設置爲默認情況下的瞬態。

這怎麼可能?

+1

據我所知,JPA假定所有字段默認是持久的,所以你必須在字段的基礎上使用@Transient。我知道無法覆蓋默認值。 – planetjones 2011-05-26 12:30:48

+0

我想你可以看看創建一個你的實體的視圖得到持久化,然後用複製構造函數實例化你的實體。因此,在Entity上調用getPersistentState,它返回PersistentEntity以保存到數據存儲區,然後當您讀取時,通過傳入從數據存儲區返回的PersistentEntity來創建實體。如果你不擁有基類,這聽起來像是一個很好的選擇,因爲你的持久性將永遠與無主的超類相關聯。 – planetjones 2011-05-26 12:38:46

回答

0

如果您沒有在您的類上放置@MappedSuperclass,那麼該類的屬性將永遠不會持久。 您可以爲某些屬性提供getter方法,並將註釋放在屬性上而不是字段中。 @Id註釋確定您是否想要字段或屬性。在JPA 2中,您還可以使用@Access註釋。

相關問題