JoinColumn 어노테이션은 관계 맵핑과 함께 사용되어야 함

OpenJPA에서 관계 속성에 @Column 어노테이션이 있는 @OneToOne 또는 @ManyToOne 어노테이션이 있는 경우 @Column 어노테이션은 @JoinColumn 어노테이션으로 취급됩니다. EclipseLink는 엔티티 클래스에서 @Column 대신 @JoinColumn을 사용하여 관계 속성을 맵핑해야 함을 표시하는 예외를 처리합니다.

이 규칙은 OneToOne 또는 ManyToOne 어노테이션과 함께 사용되는 @Column 어노테이션에 플래그를 지정합니다. 빠른 수정사항은 @Column 어노테이션을 @JoinColumn 어노테이션으로 바꿉니다. 모든 해당 어노테이션 속성은 @JoinColumn 어노테이션에 복사됩니다. javax.persistence.Column 요소인 length, precisionscale은 복사되지 않습니다.

예를 들어 이 규칙은 다음 엔티티 클래스의 Column 어노테이션에 플래그를 지정합니다.


import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class TransactionEntity {
    @Id
    private int id;
 
    private long transactionNumber;
    private double amount;
    
    @ManyToOne
    @Column(name="account")
    private Account account;
}

빠른 수정사항은 @Column 어노테이션을 @JoinColumn 어노테이션으로 대체하고 적절한 가져오기를 제공합니다.


import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;

@Entity
public class TransactionEntity {
    @Id
    private int id;
 
    private long transactionNumber;
    private double amount;
    
    @ManyToOne
    @JoinColumn(name="account")
    private Account account;
}

이 문제 및 기타 OpenJPA에서 EclipseLink로의 마이그레이션 문제에 대한 정보는 OpenJPA에서 EclipseLink JPA로 마이그레이션: 맵핑 안내서를 참조하십시오.