2016-07-12 7 views
-4

DB에서 데이터를 쿼리하는 데 JPA를 사용하고 있습니다.JPA, OneToMany 및 ManyToOne

@Entity 
@Table(name = "supporter_1") 
public class Supporter{ 

    @Id 
    ... 
    @OneToMany(mappedBy = "supporter") 
    List<SubSupporter> subSuporter= new ArrayList<SuBSupporter>(); 

그리고 두 번째 클래스 : 내가 가지고

@Entity 
@Table(name = "supporter_2") 
public class SubSupporter{ 

    @Id 
    private Long id; 
    ... 
    @ManyToOne 
    @JoinColumn(name = "supporter_1.id", nullable=false) 
    Supporter supporter; 

을 그리고 모든 지지자를 얻을하고 괜찮아요에 대한 루프에서 그들을 도달하려고하지만,있을 때 subSupporter 목록에 노력 접속 후 나는를 얻을 수 오류 :

[EL Warning]: 2016-07-12 11:29:45.282--ServerSession(180353207)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The multi-part identifier "supporter_1.id" could not be bound. 
Error Code: 4104 
Call: SELECT ID, coulmn_name, supporter_1.id FROM supporter_2 WHERE (supporter_1.id = ?) 
    bind => [1 parameter bound] 
Query: ReadAllQuery(name="subSupporter" referenceClass=SubSupporter sql="SELECT ID, coulmn_name, supporter_1.id FROM supporter_2 WHERE (supporter_1.id = ?)") 

나는 선택 문장이 잘못되어 왜 그런지 알지 못합니다.

PS 나는 당신이 열 이름 supporter_1.id에 점을 가질 수 없습니다 일식 링크

+0

이것은 기존 데이터베이스입니까, 아니면 엔티티에서 생성 된 데이터베이스입니까? – Gimby

+0

그것은 데이터가있는 기존 DB이고, entite의 생성은 없습니다. – Iwnow

+0

"기존 DB"이면 스키마 정의를 게시하고 "supporter_1.id"라는 열이 있는지 여부를 설명하십시오. –

답변

0

을 사용하고 있습니다. 이것을 supporter_1_id으로 변경하십시오.

+0

좋아요, 나는 여전히 동일하게 변경했습니다. – Iwnow

+0

응용 프로그램을 다시 빌드하고 다시 배포했습니다. – Jens

+0

이제 Java SE 응용 프로그램으로 실행합니다. – Iwnow