2011-12-09 3 views
3

내 TableX에 TableY에 대한 참조가 있습니다.이 JPA 오류 란 무엇이며 어떻게 수정합니까?

@JoinColumn(name = "idTableY", referencedColumnName = "idTableY") 
@ManyToOne(optional = false, fetch=FetchType.LAZY) 
private TableY idTableY; 

이 오류가 발생합니다.

<openjpa-2.0.0-r422266:935683 fatal user error> org.apache.openjpa.persistence.ArgumentException 
"com.mycompany.entities.TableX.idTableY" has columns with targets, but OpenJPA does not support any joins on this mapping in this context. 

표 Y는이 코드를 가지고

@OneToMany(cascade = CascadeType.ALL, mappedBy = "idTableY") 
    private Collection<TableX> tableXCollection; 

이 생성 식 링크 코드 100 % 정상 (다른 엔티티/유사한 코드 테이블 아무런 문제가 없음).

그러나 이들 중 몇 가지는 이러한 오류를 제공합니다. 왜 그런가?

+0

TableX를 참조하는 tableY의 열 이름은 무엇입니까 ?? –

+0

tableX 모음 – SQC

+0

persistence.xml의 경우 – viktor

답변

4

@JoinColumn 정의를 삭제하려고하면 불필요합니다. 외래 키를 포함하는 조인 열은 자동으로 생성됩니다. 엔티티는 서로 다른 두 가지 테이블이 아닙니다. 엔티티는 db 테이블에 클래스 매핑됩니다.

+0

예 엔티티가 테이블이 아닙니다 (미안). joincolumn 팁 주셔서 감사합니다 – SQC

+0

나는 upvote에 대한 충분한 명성을 가지고 있지 않다 – SQC

5

이 정확한 오류가 발생했지만 해결 방법은 내 persistence.xml의 지속성 단위에있는 클래스 목록에 TableY를 추가하는 것이 었습니다. 나를 위해 TableY는 새로운 엔티티였습니다. @JoinColumn을 사용하면 정상적으로 작동합니다.

+0

방금이 대답을 유용하게 찾았습니다! = P –

관련 문제