JPA 2.1規範說:所有JPA實體類方法都不是最終的嗎?
實體類一定不能是最終的。實體類的方法或持久化實例變量可能是最終的。
是否「沒有辦法」的真正含義是每一個方法 - private
,static
,protected
,非國有變化等,在實體類?或者,這是否應該表明只有注有@Access(AccessType.PROPERTY)
的方法才被禁止爲final
?
我知道爲什麼實體類不能爲final
,我理解爲什麼實體類的持久實例變量不能爲final
。我也明白爲什麼持久性屬性訪問器和增變器不能是final
。
我不明白爲什麼所有其他方法(那些操縱transient
領域,例如,或者是無狀態的,或static
,或private
)不能final
。我可以推測的最好的事情是,規範想要爲任何地方的字節碼注入敞開大門 - 例如,也許我的無狀態方法調用getter需要重寫該調用以調用某種類型的JPA提供程序注入方法。
當然這個限制使得難以重用實體類從其他地方作爲構建塊,因爲其中一些可能具有final
方法,但是以其他任何方式適合用於擴充orm.xml
並因此用於轉換爲JPA實體。