加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java JPA实现 – 如何读取/设置属性?

发布时间:2020-12-15 08:43:50 所属栏目:Java 来源:网络整理
导读:我正在阅读Beginning Java EE6 Platform和Glassfish 3一书,在理解字段/属性的Access类型时遇到一些小麻烦.他们两个有什么区别? 它是如何通过JPA实现(在本例中为EclipseLink)读取/设置属性的?比如,如果它是属性访问,则可以通过可能的验证来读取/设置值,这些
我正在阅读Beginning Java EE6 Platform和Glassfish 3一书,在理解字段/属性的Access类型时遇到一些小麻烦.他们两个有什么区别?

它是如何通过JPA实现(在本例中为EclipseLink)读取/设置属性的?比如,如果它是属性访问,则可以通过可能的验证来读取/设置值,这些值可以放在get / set方法中,而字段访问选项不通过这些方法设置/获取值,而是直接在字段上?类型是否由我放置@Id注释的位置设置?

解决方法

@Access注释类型指示JPA应如何设置或获取对象中的字段.一个AccessType.FIELD JPA将使用反射直接设置字段,并且不会使用任何提供的setter方法.如果您的类通过setter方法跟踪字段的“脏”,则非常有用.相反,设置@Access(value = AccessType.PROPERTY)将指示JPA在访问字段时使用setter和getter方法.

您可以通过向setter方法添加日志记录或System.out.printlns然后更改@Access批注来证明这一点.例如:

@Id
@Access(value=AccessType.PROPERTY)
private Long Id;
public void setId(Long id) { System.out.println("SET"); this.Id = id; }

将打印SET和此:

@Id
@Access(value=AccessType.FIELD)
private Long Id;
public void setId(Long id) { System.out.println("SET"); this.Id = id; }

将不会!

你放置注释的位置也没关系,至少在Hibernate中;-).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读