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

标签 mysql spring-boot spring-data-jpa

我正在使用 Spring data 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);
    }

当ids为空时,我得到s.id in (null)

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

最佳答案

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

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

关于mysql - 具有空 IN 子句的 Spring 数据存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56379244/

相关文章:

python - 不使用任何数据库的类数据库操作

spring-boot - 在 spring boot 应用程序中启用 spring 框架的日志记录

java - Mockito 不是 stub 该方法,而是调用该方法

java - Spring JPA 数据存储库

php - 使用 PDO 的 SELECT 查询失败,在 phpMyAdmin 中有效

php - 使用 mysqli 而不是 mysql 时运行一段时间。

mysql比较忽略的 float

java - 如何将 java/resources 文件获取到 InputStream?

java - Hibernate 的 ConstraintViolationException

java - 使用数据库测试 spring boot api