首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringBoot JPQL查询列表NotIn列表

SpringBoot JPQL查询列表NotIn列表
EN

Stack Overflow用户
提问于 2018-05-08 15:53:31
回答 2查看 122关注 0票数 1

我正在挣扎于一个MySQL数据库查询,希望你能帮助我。该示例是抽象的,因为问题是查询:

POJO:

代码语言:javascript
复制
class Parent
{
 List<Child> children;
}

class Child
{
 Integer id;
}

现在我想找到所有没有孩子的父母。

像这样:

代码语言:javascript
复制
List<Parent> findByChildrenNotIn(List<Child> childs);

代码语言:javascript
复制
@Query("SELECT p FROM Parent p "
        + "LEFT OUTER JOIN p.children c "
        + "WHERE c.id != ?1 " 
        + "GROUP BY p.id "
        )
List<Parent> findByNotChildren(List<Integer> childIds); 

好的,至少可以通过“儿童”这样的方式过滤:

代码语言:javascript
复制
List<Parent> findByChildrenNot(Child child);

或者类似的东西。

这似乎很容易,但我找不到解决办法。希望你能帮我。

提前感谢!

亲切的问候

格雷果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-08 18:50:32

当一个孩子已经足够时,可以这样使用MEMBER OF

代码语言:javascript
复制
@Query("select p from Parent p where :child NOT MEMBER OF p.childs")
List<Parent> findParents(@Param("child")Child child); 

如果您有一个双向关系,您可以这样查询:

代码语言:javascript
复制
@Query("SELECT DISTINCT c.parent FROM Child c WHERE c NOT IN (:childs)")
List<Parent> findParents(@Param("childs")List<Child> childs); 
票数 2
EN

Stack Overflow用户

发布于 2018-05-08 16:22:09

这应该有效(未经测试-请提供反馈意见):

代码语言:javascript
复制
List<Parent> findDistinctByChildrenIdNotIn(List<Integer> childIds);

代码语言:javascript
复制
@Query("select distinct p from Parent p left join p.children c where c.id not in ?1")
List<Parent> findParents(List<Integer> childIds); 

更多信息:123.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50237706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档