首页 > 解决方案 > 如果列表为空/null,则 IN 子句选择所有元素

问题描述

我的存储库中有以下@Query:

@Query(value = "SELECT * FROM tableA a WHERE a.id IN :listId ",
    nativeQuery = true)
public Page<ObjectA> findInById(@Param(listId) List<String> listId);

listId如果为空或为空,我想选择所有元素。

我怎样才能做到这一点?如果可能的话,我想保留@Query.

标签: javajpa

解决方案


只需添加一个或条件,例如

@Query(value = "SELECT * FROM tableA a 
    WHERE (a.id IN :listId or coalesce(:listId , null)  is null)",
    nativeQuery = true)
public Page<ObjectA> findInById(@Param(listId) List<String> listId);

推荐阅读