我试图使用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或任何其他方法。请建议。
答案 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
,那么您不需要加入。