2011-05-02 135 views
2

这是this问题的扩展。HQL:查找子对象包含特定属性值的对象

而不是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是一个对象而不是颜色字符串。

回答

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

当然你需要有正确的映射设置

+0

谢谢!在连接中使用父母的孩子并使用“where”而不是“on”是我出错的地方。 – digiarnie 2011-05-02 11:46:30

相关问题