JPQL - 如果参数为空,则所有

JPQL - if parameter is null, then all

JPQL 是否有可能 return 所有结果并忽略参数中的空值而不是查找空值?

例如:

@Query("SELECT p FROM PromoCode p " +
            "WHERE (LOWER(p.name) LIKE LOWER(concat('%', concat(:query, '%'))) OR " +
            "LOWER(p.promoCode) LIKE LOWER(concat('%', concat(:query, '%')))) AND p.type = :type")
Page<PromoCode> search(@Param("query") String query, @Param("type") PromoCode.Type type, Pageable pageable)

如果 :type 为空,我如何忽略它?

您最可能需要的是 CriteriaQuery 内置在自定义存储库中。它专为您的需要而设计,根据各种因素构建查询。

如果你真的想坚持使用 @Query 你总是可以通过这种方式将那部分设为可选:

AND (p.type = :type OR :type is null)

当有更多这样的参数时,问题开始浮出水面。您的查询将难以维护和理解。