我正在使用 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/