具有空IN子句的Spring数据存储库

时间:2019-05-30 13:24:53

标签: mysql spring-boot spring-data-jpa

我正在像这样使用Spring数据JPA:

    public interface SampleRepository extends CrudRepository<Sample, Integer>{

    @Query("SELECT s FROM Sample s WHERE ((:ids) IS NULL OR s.id IN (:ids))")
            List<Sample> queryIn(@Param("ids") List<Integer> ids);
    }

但是当ids不为空时,我得到(1,2,3)为null,这在mysql中是不正确的。

如果我这样写:

    public interface SampleRepository extends CrudRepository<Sample, Integer>{
    @Query("SELECT s FROM Sample s WHERE s.id IN (:ids)")
            List<Sample> queryIn(@Param("ids") List<Integer> ids);
    }

当id为空时,我在(null)中得到s.id

如果我必须使用本机查询来执行此操作。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我猜您想使用ISNULL函数查看:ids是否具有值

SELECT s FROM Sample s WHERE s.id IN (:ids)) or ISNULL(:ids) = 1