2017-01-05 3 views
6

私は、エンティティとNamedQueryありますHQLの要素ゼロにアクセスするには?

@Entity 
@Table(name="MY_TABLE") 
@NamedQueries({ 
    @NamedQuery(name="myQuery", query="select m from MyEntity m where m.child.x = 7" 
}) 
public class MyClass { 

    @Column(name="CHILD_COL") 
    private Child child; 
    // getter and setter 

} 

public class Child { 
int x; 
// getter and setter 
} 

は今、私はリスト0の子を持つようにそれを変更したい:

@Entity 
@Table(name="MY_TABLE") 
@NamedQueries({ 
    @NamedQuery(name="myQuery", query="select m from MyEntity m where m.childs[0].x = 7" 
}) 
public class MyClass { 

    @Column(name="CHILD_COL") 
    private List<Child> childs; 
    // getter and setter 

} 

だがしかし、構文 'をチャイルズ[0] .X' はありません存在しない。どのように私はそれを行うことができます考え?

答えて

0

インデックス付きリストは、Hibernateによってサポートされますが、重要な定義です。 POJOで

::古い方法(XMLマッピング)あなたは次のように働くことができるで

<list name="childs" table="yourtable" cascade="all,delete-orphan" 
    inverse="false" lazy="false"> 
    <key column="fk_to_parent"/> 
    <list-index column="an_integer_column"/> 
     <one-to-many class="Child" /> 
</list> 

JPAの注釈では、あなたがIndexColumnアノテーションを使用する必要があります。XMLマッピングで

private List<Child> childs; 

以下のようになります。

@IndexColumn(name="an_integer_column", base=0, nullable=false) 

だから、あなたが持っているでしょう:それはOK

かどう

@Column(name="CHILD_COL") 
@IndexColumn(name="an_integer_column", base=0, nullable=false) 
private List<Child> childs; 

は教えてください

関連する問題