我在Java中使用Hibernate将类映射到DB表。我有一个“人”表,每个条目有很多宠物,每个都有很多玩具。
我希望能够根据玩具的属性在我的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 '在此处多余。