JPA 2.1规范说:所有JPA实体类方法都不是最终的吗?
实体类一定不能是最终的。实体类的方法或持久化实例变量可能是最终的。
是否“没有办法”的真正含义是每一个方法 - private
,static
,protected
,非国有变化等,在实体类?或者,这是否应该表明只有注有@Access(AccessType.PROPERTY)
的方法才被禁止为final
?
我知道为什么实体类不能为final
,我理解为什么实体类的持久实例变量不能为final
。我也明白为什么持久性属性访问器和增变器不能是final
。
我不明白为什么所有其他方法(那些操纵transient
领域,例如,或者是无状态的,或static
,或private
)不能final
。我可以推测的最好的事情是,规范想要为任何地方的字节码注入敞开大门 - 例如,也许我的无状态方法调用getter需要重写该调用以调用某种类型的JPA提供程序注入方法。
当然这个限制使得难以重用实体类从其他地方作为构建块,因为其中一些可能具有final
方法,但是以其他任何方式适合用于扩充orm.xml
并因此用于转换为JPA实体。