【问题标题】:How to filter by attributes of attributes of an Entity class in Hibernate如何在 Hibernate 中按实体类的属性进行过滤
【发布时间】:2015-10-04 05:51:45
【问题描述】:

我在 Java 中使用 Hibernate 将类映射到 DB 表。我有一个 Person 表,每个条目都有很多 Pets,每个 Pets 都有很多 Toys。

我希望能够根据玩具的属性在我的 DAO 中过滤这些;例如,查找所有拥有红色玩具的宠物的人,例如List<Person>。我该如何过滤?

人物类:

@Entity
public class Person {

    ...
    @OneToMany(mappedBy = "person")
    private List<Pet> pets;

    ...
}

宠物类:

@Entity
public class Pet {

    ...
    @OneToMany(mappedBy = "pet")
    private List<Toy> toys;

    ...
}

玩具类:

@Entity
public class Toy {

    ...
    private String colour;

    ...
}

【问题讨论】:

    标签: java hibernate jpa mapping


    【解决方案1】:

    我不确定您在这种情况下的“过滤器”是什么意思,但您始终可以使用 HQL。 例如:

    select p from Person p 
                  inner join p.pets as pets
                  inner join pets.toys as toys
                  where p.pets.size() > 0 
                  and toys.color = 'red'
    

    也许条件 'p.pets.size() > 0' 在这里是多余的,因为内部连接。

    【讨论】:

    • 运气不好 - 它会返回所有颜色的玩具。
    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多