2017-01-05 10 views
6

मैं इकाई और NamedQuery है:एचक्यूएल में तत्व शून्य कैसे प्राप्त करें?

@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 
} 

अब, मैं एक सूची ओ बाल के लिए इसे बदलना चाहते:

@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

इंडेक्सेड सूचियां हाइबरनेट द्वारा समर्थित हैं लेकिन परिभाषा महत्वपूर्ण है।

पुराने तरीके (XML मैपिंग) आप इस प्रकार काम कर सकते हैं में:

POJO में:

private List<Child> childs; 

एक्सएमएल मानचित्रण में:

<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> 

जेपीए एनोटेशन में आप IndexColumn एनोटेशन का उपयोग करना चाहिए जैसा कि अनुसरण करें:

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

तो तुम होगा:

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

मुझे बताओ यह ठीक है

संबंधित मुद्दे