错误意外的令牌'%' :JPQL - LIKE%FUNCTION(:namedParam)%

时间:2018-02-22 11:20:04

标签: java jpa spring-data-jpa jpql

我收到了意外的令牌'%'当使用这个JPQL查询时:在我的情况下,我使用upper函数,但它可以是任何人。

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE %UPPER(:asunto)% ")
public Entity namedMethod(@Param("asunto") String asunto));

我需要添加LIKE%:param%来查找我文本中param的任何巧合。

尝试过:

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%'UPPER(:asunto)'%' ")

意外的令牌:UPPER

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%UPPER(:asunto)%' ")

意外的令牌:UPPER

也没有运气。

提前致谢。

1 个答案:

答案 0 :(得分:3)

解决了,有两种方法可以解决这个问题:

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE '%' || UPPER(:asunto) || '%' ")

@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE CONCAT('%', CONCAT(UPPER(:asunto),'%')) ")
EDIT-- Thanks to @Nicolau: 
@Query("SELECT s FROM Entity s WHERE UPPER(s.asunto) LIKE UPPER(CONCAT('%',:asunto,'%'))")

两者都有效!

感谢@ M.Prokhorov。