集合映射的where子句

时间:2014-02-10 14:15:32

标签: mysql hibernate

我试图使用where子句从两个不同的表中获取数据。我是否能够在映射的类的属性上编写where子句。

例如:我有两个班级

Class box{

private int id;
private String name;
private int colorId;
private int size;

//getter
//setter

}


class color{

private int colorId;
private String colourName;
Private set<box> boxes;



}

映射:

 <class name="box" table="box">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
     <propert name="name" column="name"/>
     <property name="size" column="size"/>
 </class>

<class name="color" table="color">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
       <propert name="name" column="name"/>
       <set name="boxes" table="box" lazy="false" fetch="join">
        <key><column name="colorId" /></key>
        <one-to-many class="box" not-found="ignore"/>
      </set>
 </class>

我可以编写像 FROM COLOR这样的HQL,其中boxes.size&gt; 10

我如何实现这种使用HQL或任何其他方法。请建议。

1 个答案:

答案 0 :(得分:1)

使用HQL,您可以尝试...

JPA.em().createQuery("SELECT box FROM Color color JOIN color.boxes box where box.size > 10 and color.colorId = ?");

因此,对于给定颜色,您可以获得具有size > 10的所有框。 如果您希望所有框都在box.size > 10,那么您不需要加入。