HQL:查找子对象包含特定属性值的对象

时间:2011-05-02 02:37:41

标签: java sql hql

这是this问题的扩展。

而不是SQL,我如何使用HQL做同样的事情? (即找到所有同时具有黑色和白色但可能有其他颜色的狗)

假设我的实体类看起来像这样:

public class Dog {
    private Long id;
    private Set<DogColor> colors;
    private String name;
    private String size;

    ...
}

public class DogColor {
    private Long id;
    private String color;

    ...
}

然后我希望我的HQL看起来像这样:

from dog where dog.colors contains ("black", "white")

显然这只是伪代码,因为dog.colors是一个对象,而不是颜色字符串。

1 个答案:

答案 0 :(得分:3)

Select d from dog d join d.colors o where o.color in ("black","white")

当然,您需要设置正确的映射