Ash*_*sal 50 java transient jpa-2.0
我只是想知道所有这些注释之间的区别.我们为什么要使用这些...意味着它们没有影响,尤其是字段级别和属性级别.
使用混合级注释的目的是什么:
@Entity
@Access(AccessType.FIELD)
class Employee {
// why their is a field level access
private int id;
// whats the purpose of transient here
@Transient
private String phnnumber;
// why its a property level access
@Access(AccessType.property)
public String getPhnnumber() {
return "1234556";
}
}
Run Code Online (Sandbox Code Playgroud)
这堂课到底是什么意思?
Pio*_*cki 72
默认情况下,访问类型由您放置标识符注释(@Id)的位置定义.如果你把它放在场上 - AccessType.FIELD如果你把它放在吸气器上,它就会是AccessType.PROPERTY.
有时您可能想要注释不是字段而是属性(例如,因为您希望在getter中有一些任意逻辑,或者因为您喜欢这种方式.)在这种情况下,您必须定义一个getter并将其注释为AccessType.PROPERTY.
据我所知,如果您指定任何实体字段/方法中的任何一个AccessType.FIELD或AccessType.PROPERTY任何实体字段/方法,则必须指定整个类的默认行为.这就是为什么你需要AccessType.FIELD在类级别上(尽管这AccessType.FIELD是默认值.)
现在,如果您没有@Transient该phnnumber字段,JPA将为您提供3列表:
那是因为它将AccessType.FIELD用于所有实体字段(id和phnnumber),同时它将AccessType.PROPERTY用于你的getter(getPhnnumber()).
您将以数据库中两次映射的电话号码结束.
因此,@Transient注释是必需的 - 这意味着实体不会将字段的值存储在底层存储中,而是存储getter返回的值.
| 归档时间: |
|
| 查看次数: |
52625 次 |
| 最近记录: |