【发布时间】:2013-12-16 23:34:57
【问题描述】:
JPA 2.1 规范说:
实体类不能是最终的。实体类的任何方法或持久实例变量都不能是最终的。
“无方法”真的意味着实体类中的每个方法——private、static、protected、不改变状态等吗?或者这是否应该传达只有带有@Access(AccessType.PROPERTY) 注释的方法才被禁止成为final?
我明白为什么实体类不能是final,我也明白为什么实体类的持久实例变量不能是final。我也明白为什么持久属性访问器和修改器不能是final。
我不明白为什么所有其他方法(例如,操纵transient 字段的方法,或者是无状态的,或者static,或者private)不能是final。
我能猜到的最好情况是规范希望为字节码注入敞开大门——例如。也许我的无状态方法对 getter 的调用需要重写该调用以调用某种 JPA-provider-injected 方法。
当然,这种限制使得从其他地方重用类似实体的类作为构建块变得很困难,因为其中一些可能具有final 方法,但在其他所有方面都适合用orm.xml 进行扩充,从而转换为 JPA 实体。
【问题讨论】:
标签: jpa