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

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

最佳答案

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

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

关于java - HQL:查找子对象包含特定属性值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5853059/

相关文章:

mysql - SQL如何统计表的每个字段

java - org.hibernate.hql.internal.QueryExecutionRequestException : Not supported for DML operations without using hibernate

java - 如何通过 HQL 获取 map

java - 通过删除生成所有可能的排列

java - 两个 INT 变量的开关大小写

java - 通过 Spring Config 扫描 Spring Data 存储库?

java - 如何为 Android 设置背景图片?

php - 如何将多个元键作为列运行 SQL 查询,并将它们的值作为行运行?

php - 对已有 GROUP BY 的查询使用 ORDER BY

mysql - 使用两个实体表进行批量更新的 Hibernate Hql