【发布时间】:2020-02-02 14:06:16
【问题描述】:
我有一个 Spring Boot 存储库,我尝试在其中使用 HQL 创建一个查询函数。
该函数接受一个整数参数,如果它为空,则查询应忽略该参数,否则应检查列表是否包含该值。
我将 where 子句分为两部分,空值检查和列表检查,如下所示:
@Query("SELECT u FROM MyEntity " +
" WHERE (:myParam is null or :myParam in (2, 3))"
)
现在的问题是,对于 :myParam in (2, 3) 部分,它抱怨“不一致的数据类型:预期的 BINARY 得到了 NUMBER
(当 :myParam 为 null 时,对于 :myParam != null 有效)
我试过了:
将参数或空值转换为 in
使用 coalesce(:myParam, CAST(NULL AS int)) 解决了 :myParam 是整数列表的类似问题
使用 switch case 语句
(case when :spracheKy is null then true when :spracheKy in (2, 3) then true else false end) = true
提前感谢您的帮助
【问题讨论】: