本文共 1569 字,大约阅读时间需要 5 分钟。
作为JPA的实现之一,Hibernate默认支持JPA的实体字段(instance field)访问和getter方法(instance property)访问两种访问策略。
1. 通过@javax.persistence.Id设置JPA默认访问策略@Entitypublic class Simple { @Id private Integer id; public Integer getId() { return id; } public void setId( Integer id ) { this.id = id; }}
在基于字段(field)的访问策略中,Entity类无需(但可以)提供字段的getter/setter方法。此外,Entity类还可以提供任意其他方法。
@Entitypublic class Simple { private Integer id; @Id public Integer getId() { return id; } public void setId( Integer id ) { this.id = id; }}
在基于属性(property)的访问策略中,Entity类必须提供字段的getter/setter方法。此外,Entity类提供的其他方法必须使用@javax.persistence.Transient修饰。
2. 通过@javax.persistence.Access改变默认的JPA访问策略 通过对Entity类,或者Entity类的字段(field)直接使用@javax.persistence.Access,可以改变默认的访问策略: @javax.persistence.Access(AccessType.FIELD) @javax.persistence.Access(AccessType.PROPERTY)@Entitypublic class Simple { private Integer id; @Version @Access( AccessType.FIELD ) private Integer version; @Id public Integer getId() { return id; } public void setId( Integer id ) { this.id = id; }}3. 嵌套组合类型@javax.persistence.Embeddable的Entity类的访问策略 嵌套组合类型的Entity类的访问策略,默认继承自其所在Entity类(父实体类)的属性访问策略。
也可以使用@javax.persistence.Access修饰类以改变属性访问策略。
@Embeddable@Access(AccessType.PROPERTY)public static class Change { private String path; ...}@Entitypublic class Patch { @Id private Long id; @Embedded private Change change;}
转载地址:http://tnlai.baihongyu.com/