【问题标题】:What does @Transient annotation mean for methods?@Transient 注解对方法意味着什么?
【发布时间】:2014-02-23 23:14:41
【问题描述】:

所以我了解到,Java 中的 transient 关键字意味着实体不会持久化,而 JPA 中的 @Transient 注释意味着不会将字段持久化到数据库中。但是@Transient 应用于方法而不是变量意味着什么?

这是我在我们的代码中找到它的地方:

@Transient
public boolean getTabFoo() {
    if ((this.viewFoo1 != ACCESS_NONE)
            || (this.viewFoo2 != ACCESS_NONE) || (this.viewFoo3 != ACCESS_NONE)
            || (this.getViewFoo4() != ACCESS_NONE)) {
        return true;
    }
    return false;
}

【问题讨论】:

    标签: jakarta-ee jpa annotations transient


    【解决方案1】:

    所有字段级 JPA 注释都可以放置在字段或属性上,它确定实体的访问类型(即 JPA 提供者将如何访问该实体的字段 - 直接或使用 getter/setter)。

    默认访问类型由 @Id 注释的位置决定,并且对于实体的所有字段(或继承实体的层次结构)应该是一致的,除非某些字段被 @Access 显式覆盖。

    因此,getter 上的 @Transient 与字段上的 @Transient 具有相同的含义 - 如果您的实体的默认访问类型是属性访问,则您需要使用 @Transient 注释所有不对应于持久属性的 getter .

    【讨论】:

    • 谢谢你,这样就更清楚了。所以它只被用在一个方法上,因为它是一个吸气剂,那么呢?
    【解决方案2】:

    这是一个合适的 getter 方法,默认情况下 JPA 将假定它绑定到实体属性。如果您不希望 JPA 将 getter 视为属性,则将 @Transient 注释应用于该方法。

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 2011-08-28
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2011-12-28
      • 2020-10-12
      • 2011-06-11
      • 2010-10-02
      相关资源
      最近更新 更多