我在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’在这里是冗余的.