专用 accessor 方法必须具有 Transient 注释

根据 JPA 2.1 规范,在使用属性访问权时,属性 accessor 方法必须是公共的或被保护的。OpenJPA 忽略任何专用 accessor 方法,而 EclipseLink 持久存储这些属性。要忽略 EclipseLink 中的专用 accessor 方法,这些方法必须具有 Transient 注释。

该规则标记专用 accessor getter 方法。 该规则的自动修复将添加 javax.persistence.Transient 注释,使应用程序 在 EclipseLink 中的行为与在 OpenJPA 中的行为相同。 要持久化该属性,请将私有访问控制修饰符更改为 公共受保护

例如,该规则会标记以下实体类中的 getNonPersistentField() 方法:

package 实体;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
公用类 PrivateAccessor { private int id; private int field; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} private int getNonPersistentField() { return nonPersistentField;
	} private void setNonPersistentField(int value) { this.field = value;
	}}

自动修复运行后, Transient 注释将应用于私有访问器方法,并添加导入。

package 实体;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

@Entity
公用类 PrivateAccessor { private int id; private int field; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} @Transient private int getNonPersistentField() { return nonPersistentField;
	} private void setNonPersistentField(int value) { this.field = value;
	}}

有关此问题和其他 OpenJPA 到 EclipseLink 迁移问题的信息,请参阅 OpenJPA to EclipseLink JPA Migration: Mappings 指南。