email
在我的情况下,这可以处理空值,但是当我没有空值@Query("select t from Menu t where (?1 is null or t.name like %?1%)")
没有效果时,就无法进行模糊搜索。
我想要代码= 4并找到
4 546 345
但只能找到
4
任何帮助?
答案 0 :(得分:0)
您尝试使用的功能已在ticket DATAJPA-292中引入 在评论中,您将找到导致问题的限制:
需要注意的是,对同一参数的引用只能配备相同的LIKE表达式。以下查询代码段无效:
… firstname like %?1 and lastname like ?1%
因为我们只能绑定一个参数。
要解决该限制,您应该能够使用SpEL表达式。请尝试以下方法:
@Query("select t from Menu t where (?1 is null or t.name like ?#{'%'+[0]+'%'})")
不是100%肯定,但我认为这应该也可以,因为它基本上将绑定实例视为单独的参数:
@Query("select t from Menu t where (?1 is null or t.name like %?#{[0]}%)")