java - 错误意外 token '%' : JPQL - LIKE %FUNCTION(:namedParam)%

标签 java jpa spring-data-jpa jpql

使用此 JPQL 查询时,我得到意外的标记“%”:在我的例子中,我使用了上层函数,但它可以是任何人。

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

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

尝试过:

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

意外的 token :UPPER

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

意外的 token :UPPER

那里也没有运气。

提前致谢。

最佳答案

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

@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。

关于java - 错误意外 token '%' : JPQL - LIKE %FUNCTION(:namedParam)%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48926162/

相关文章:

数据库设计对两个表之间双向外键的考虑

spring-data - 领域驱动设计存储库和 Spring Data 存储库之间是否存在不匹配?

java - 在运行时以编程方式定义和删除 Spring Boot/Spring JPA 数据源?

java - 为什么实体管理器在Spring Boot测试父级中不为空,但在存储库中为空?

java - 卢塞恩 : How to get LongField from index

java - 查找 ArrayList<Object> 中的特定类型(即 Object = String 等)

java - 如何在 Java EE 应用程序中锁定数据库记录?

java - 部署时 persistence.xml 中的 Manege jta-data-source

java - GWT - 防止 PDF 文件在 IE 中缓存?

具有变化对象的 Java instanceof