猿问

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

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

例如:

@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如果它为空,我该如何忽略它?


撒科打诨
浏览 124回答 1
1回答

MMTTMM

您最可能需要的是一个CriteriaQuery内置的自定义存储库。它专为您的需要而设计,构建依赖于各种因素的查询。如果你真的想坚持下去,@Query你总是可以通过这种方式使该部分成为可选的:AND&nbsp;(p.type&nbsp;=&nbsp;:type&nbsp;OR&nbsp;:type&nbsp;is&nbsp;null)当有更多这样的参数时,问题就开始浮出水面。您的查询将难以维护和理解。
随时随地看视频慕课网APP

相关分类

Java
我要回答