java – 如何在Hibernate中按实体类的属性属性进行过滤

我在Java中使用Hibernate将类映射到数据库表.我有一个人员表,每个条目有很多宠物,每个宠物都有很多玩具.

我希望能够根据玩具的属性在我的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;

    ...
}

解决方法:

在这种情况下,我不确定你的意思是’过滤器’,但你总是可以使用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’在这里是冗余的.

上一篇:同一路径下jsp能访问到,html不能访问到


下一篇:Spring源码解析 -- SpringWeb请求映射Map初始化