엔티티 클래스에서 Getter 및 Setter 메소드에 어노테이션을 배치하여 특성 액세스를 사용하는 경우 Getter 메소드 및 Setter 메소드는 둘 다 지속될 필드에 대해 정의되어야 합니다. 어노테이션이 있으며 Setter 메소드를 동반하지 않는 Getter 메소드는 OpenJPA에서 무시되지만 이 상황에서 EclipseLink는 예외 처리합니다.
이 규칙은 Setter 메소드가 없는 특성 액세스 필드의 어노테이션이 있는 Getter 메소드에 플래그를 지정합니다. 엔티티 정의를 검토하고 의도대로 동작하도록 수정하십시오. JPA 제공자에서 필드를 무시하도록 하려면 Getter 메소드에서 어노테이션을 제거하십시오. 필드가 지속되게 하려면 Setter 메소드를 추가하십시오.
다음 엔티티 클래스에서 getVersion 메소드는 규칙에 의해 플래그 지정됩니다.
package entities; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; import javax.persistence.Version; @Entity public class MissingSetter2 { private int id; private long time; public MissingSetter2 (int id) { this.id = id; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } // 이 Getter에는 어노테이션이 없으므로 플래그가 지정되지 않습니다. public long getTime() { return time; } // 이 Getter에는 어노테이션이 있고 Setter가 없으므로 플래그가 지정됩니다. @Version public double getVersion() { return 2.0; } public MissingSetter2() { time = 0; } } |
이 문제 및 기타 OpenJPA에서 EclipseLink로의 마이그레이션 문제에 대한 정보는 OpenJPA에서 EclipseLink JPA로 마이그레이션: 맵핑 안내서를 참조하십시오.