我使用的是 spring data jpa :什么是最好的方式来过滤父对象上的子对象。在我下面的例子中,我希望父对象有活动的查尔兹对象,也希望只有活动的子对象作为列表与父
@Query(select distinct p from Parent p inner join p.child c where c.active=:active)
Page<Parent> getAllPArents(@Param("active") int active);
@Entity
Parent{
@OneToMany(fetch=FetchType.LAZY)
List<Child> child;
}
@Entity
Child{
@ManyToOne
Parent parent;
}
3条答案
按热度按时间zqry0prt1#
我也遇到了同样的问题,我花了一段时间才弄清楚它是如何工作的。当你在
JOIN
之后添加FETCH
时,子列表将被过滤,如下所示:oalqel3c2#
花了很多时间后,我无法找到任何解决方案来过滤子查询父。我决定改变数据库结构,这样我就可以查询我想要的子。添加了另一个字段/属性,可以把子到不同的类别。当查询子使用唯一的条件,将只给予我我需要的子,也给了我我需要的父。
zynd9foi3#
我找到了这样做的方法:您可以使用@Where注解来筛选一对多或多对多相关性的查尔兹系。