【发布时间】:2012-12-11 06:43:38
【问题描述】:
为什么将 jpa 注释应用于字段或 getter 方法。如果我尝试在 setter 方法上应用注释,则编译器会生成错误。因为编译器忽略了 setter 方法的注释。他们背后的原因是什么?
【问题讨论】:
标签: java hibernate jpa annotations jpa-2.0
为什么将 jpa 注释应用于字段或 getter 方法。如果我尝试在 setter 方法上应用注释,则编译器会生成错误。因为编译器忽略了 setter 方法的注释。他们背后的原因是什么?
【问题讨论】:
标签: java hibernate jpa annotations jpa-2.0
这就是它的指定方式。每JPA Specification:
- 当使用基于字段的访问时,实体类的对象/关系映射注解注解实例变量,持久化提供程序运行时直接访问实例变量。所有未使用 Transient 注解的非瞬态实例变量都是持久的。
- 当使用基于属性的访问时,实体类的对象/关系映射注释会注释 getter 属性访问器[7],并且持久性提供程序运行时通过属性访问器方法访问持久状态。所有未使用 Transient 注释注释的属性都是持久的。
- 映射注释不得应用于瞬态或瞬态的字段或属性。
你有两个选择。使用字段级注释或属性(getter 方法)注释。没有第三种选择。
【讨论】:
因为对于一个对象来说,只有两种方法可以访问属性,直接访问字段或间接访问getter。
对于实体bean,注解指定如何将属性映射到列,而JPA需要访问实体的这些状态,所以我想这是直接将注解放在字段上或getter上的最直观的方式。
【讨论】:
当我们在getter上放注解时,JPA通过getter访问属性。不需要在setter上放注解。
【讨论】: