[java] @ManyToOne 속성에는 @Column이 허용되지 않습니다.

속성이 다음과 같이 설정된 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기본 설정이 왜 더 좋은지에 대한 자세한 내용은 이 기사를 확인 하십시오 .


답변