所以我已经了解到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;
}
答案 0 :(得分:6)
所有字段级JPA注释都可以放在字段或属性上,它确定实体的访问类型(即JPA提供者如何直接访问该实体的字段或使用getter / setter)。
默认访问类型由@Id
注释的放置确定,并且对于实体的所有字段(或继承实体的hiererchy)应该是一致的,除非@Access
明确覆盖某些字段。
因此,getter上的@Transient
与字段上的@Transient
具有相同的含义 - 如果您的实体的默认访问类型是属性访问权限,则需要注释所有不对应的getter @Transient
的持久属性。
答案 1 :(得分:0)
它是一个正确的getter方法,默认情况下JPA将假定绑定到实体属性。如果您不希望JPA将getter视为属性,则将@Transient注释应用于该方法。