JPA:为什么注释应用于 getter 或字段

问题描述 投票:0回答:3

为什么 jpa 注释应用于字段或 getter 方法。如果我尝试在 setter 方法上应用注释,那么编译器会生成错误。因为编译器会忽略setter方法上的注释。他们背后的原因是什么?

java hibernate jpa annotations jpa-2.0
3个回答
14
投票

这就是它的指定方式。根据 JPA 规范

  • 当使用基于字段的访问时,实体类的对象/关系映射注释对实例变量进行注释,持久化提供程序运行时直接访问实例变量。所有没有使用 Transient 注解的非瞬态实例变量都是持久的。
  • 当使用基于属性的访问时,实体类的对象/关系映射注释会注释 getter 属性访问器[7],持久性提供程序运行时通过属性访问器方法访问持久状态。所有未使用 Transient 注释进行注释的属性都是持久的。
  • 映射注释不得应用于瞬态或瞬态的字段或属性。

你有两个选择。使用字段级注释或属性(getter 方法)注释。没有第三种选择。


2
投票

因为对于一个Object来说,只有两种方法可以直接访问属性、字段或者间接访问getter。

对于实体bean,注释指定如何将属性映射到列,而JPA需要访问实体的这些状态,所以我想这是直接将注释或getter放在字段上的最直观的方式。


1
投票

当我们在 getter 上添加注解时,JPA 通过 getters 访问属性。无需在 setter 上添加注解。

© www.soinside.com 2019 - 2024. All rights reserved.