속성이 다음과 같이 설정된 JPA 엔터티가 있습니다.
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
그러나 JBoss 6에 배포하면 응용 프로그램에서 다음과 같은 오류가 발생합니다.
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
JPA 2.0 구현으로 Hibernate 3.5를 사용합니다.
외래 키 열을 참조하려면 무엇을 사용해야합니까?
답변
@JoinColumn
대신에 사용하십시오 @Column
:
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
답변
사용 @JoinColumn
과 @Column
함께하면 같은 오류가 발생합니다. 다음 @JoinColumn
을 사용하도록 변경 하여 수정하십시오.
답변
@Column
JPA의 @Column
주석이 기본 엔티티 속성입니다 같은 String
, Integer
, Date
.
따라서 엔티티 속성 이름이 기본 열 이름과 다른 경우 @Column
주석을 사용하여 다음 과 같이 열 이름을 명시 적으로 지정해야합니다.
@Column(name="created_on")
private LocalDate createdOn;
@JoinColumn
@JoinColumn
주석은 사용자 지정하는 데 사용됩니다 외래 키 열 이름을 , 그리고 그것은 단지 기업 협회와 함께 사용할 수 있습니다.
따라서 귀하의 경우 @ManyToOne
연결을 사용하기 때문에 다음 을 사용해야합니다 @JoinColumn
.
@ManyToOne(fetch=FetchTYpe.LAZY)
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
기본적
fetch
으로이 속성이 설정되어 있으며FetchType.LAZY
이는FetchType.EAGER
끔찍한 전략입니다.FetchType.LAZY
기본 설정이 왜 더 좋은지에 대한 자세한 내용은 이 기사를 확인 하십시오 .