@Transient 注解对方法意味着啥?

Posted

技术标签:

【中文标题】@Transient 注解对方法意味着啥?【英文标题】: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;

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

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

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

【讨论】:

以上是关于@Transient 注解对方法意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥Java有瞬态字段?

@Transient 注解、@org.springframework.data.annotation.Transient 注解、transient 关键字和密码存储

@Transient注解----Hiberbate

Hibernate JPA中@Transient@JsonIgnoreProperties@JsonIgnore@JsonFormat@JsonSerialize等注解解释

Java中的关键字“transient”是啥意思? [复制]

java中的关键字transient是啥意思