private 액세서 메소드에 임시 어노테이션이 있어야 함

JPA 2.1 스펙에 따르면 특성 액세스가 사용되는 경우 특성 액세서 메소드는 public 또는 protected여야 합니다. OpenJPA는 private 액세서 메소드를 무시하지만 EclipseLink는 해당 속성을 지속합니다. EclipseLink에서 private 액세서 메소드를 무시하려면 메소드에 임시 어노테이션이 있어야 합니다.

이 규칙은 private 액세서 Getter 메소드에 플래그를 지정합니다. 이 규칙에 대한 자동 수정은 다음과 같이 추가됩니다 javax.persistence.Transient 어노테이션을 메서드에 추가하여 애플리케이션이 이 EclipseLink 에서 OpenJPA 에서와 동일한 동작을 하도록 주석을 추가합니다. 속성을 유지하려면 비공개 액세스 제어 수정자를 공개 또는 보호됨으로 변경합니다.

예를 들어 규칙은 다음 엔티티 클래스에서 getNonPersistentField() 메소드에 플래그를 지정합니다.

package 엔티티

가져오기 javax.persistence.Entity;
가져오기 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 엔티티

가져오기 javax.persistence.Entity;
가져오기 javax.persistence.Id;
가져오기 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에서 EclipseLink JPA로 마이그레이션: 맵핑 안내서를 참조하십시오.