@Transient注释对方法意味着什么?

时间:2014-01-31 09:53:48

标签: java-ee jpa annotations transient

所以我已经了解到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;
}

2 个答案:

答案 0 :(得分:6)

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

默认访问类型由@Id注释的放置确定,并且对于实体的所有字段(或继承实体的hiererchy)应该是一致的,除非@Access明确覆盖某些字段。

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

答案 1 :(得分:0)

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