2016-07-12 13 views
-4

JPAを使用してDBからデータを照会しています。私が得た: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で、データはありません。 – Iwnow

+0

"既存のDB"の場合はスキーマ定義を投稿し、実際に "supporter_1.id"という列があるかどうかを説明してください –

答えて

0

を使用しています。 supporter_1_idに変更

+0

私はそれを変えました。 – Iwnow

+0

あなたのアプリケーションを再構築して再デプロイしましたか? – Jens

+0

今、私はJava SEアプリケーションとして実行しています。 – Iwnow

関連する問題