【问题标题】:JPA: Why the annotations are applied on getter or fieldJPA:为什么将注释应用于 getter 或字段
【发布时间】:2012-12-11 06:43:38
【问题描述】:

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

【问题讨论】:

    标签: java hibernate jpa annotations jpa-2.0


    【解决方案1】:

    这就是它的指定方式。每JPA Specification

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        当我们在getter上放注解时,JPA通过getter访问属性。不需要在setter上放注解。

        【讨论】:

          猜你喜欢
          • 2017-07-25
          • 2017-03-15
          • 2010-09-24
          • 1970-01-01
          • 2011-05-10
          • 1970-01-01
          • 1970-01-01
          • 2016-03-20
          • 1970-01-01
          相关资源
          最近更新 更多