sourcecode

@ManyToOne 속성에서는 열을 사용할 수 없습니다.

copyscript 2022. 8. 10. 22:14
반응형

@ManyToOne 속성에서는 열을 사용할 수 없습니다.

속성이 다음과 같이 설정된 JPA 엔티티가 있습니다.

@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;

그러나 JBoss 6에 도입하면 다음과 같은 오류가 발생합니다.

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property

Hibernate 3.5를 JPA 2.0 구현으로 사용하고 있습니다.

외부 키 열을 참조하려면 무엇을 사용해야 합니까?

사용하다@JoinColumn대신@Column:

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;

사용.@JoinColumn그리고.@Column같은 에러가 발생합니다.use: to fix로 변경합니다.

@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디폴트로는 사용되고 있기 때문에, 그것은 끔찍한 전략입니다.

내 경우 @Vaishali Kulkarni의 답변이 문제를 식별하는 데 도움이 되었다.

@Column annotation 필드를 입력하지 못해 다음 필드에 영향을 주었습니다.

@Column(name = "account_id")
// I forgot to write field here

@ManyToOne
@JoinColumn(name = "customer_id")
private Customer customer;

그래서 저는 "고객" 분야에서 예외를 인정받았습니다.

언급URL : https://stackoverflow.com/questions/4121485/columns-not-allowed-on-a-manytoone-property

반응형