HQL:查找子对象包含特定属性值的对象
问题描述:
这是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是一个对象而不是颜色字符串。
答
Select d from dog d join d.colors o where o.color in ("black","white")
当然你需要有正确的映射设置
谢谢!在连接中使用父母的孩子并使用“where”而不是“on”是我出错的地方。 – digiarnie 2011-05-02 11:46:30