hibernate - @Query 注解使用 like %?1%

标签 hibernate jpa hql spring-data

我想写这样的查询

@Query("select p from Product p where p.name = ?1 or p.desc like %?1%")

但它给了我异常(exception)

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: % near line 1,

我尝试用 '%' 替换 % 或像这样连接查询字符串:"select ... like '%'"+ "?1"+ "'%'"但没有成功,请帮助我

最佳答案

如果您使用的是 Spring Data JPA 1.3.1 或更高版本,您需要执行以下操作:

@Query("select p from Product p where p.name = :name or p.desc like %:name%")
public List<Product> searchByName(@Param("name") String name);

查看 this博客文章了解更多详情

在 Spring Data JPA 1.3.1 之前,您不能在 @Query 注释中使用 %,而是需要将它添加到参数本身

关于hibernate - @Query 注解使用 like %?1%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23326642/

相关文章:

java - JPA Criteria API - 如何从 JPA 获取单向 ManyToOne 关系的对立面

java - 使用hibernate,如何在xml中编写@OneToMany(mappedBy ="somethingFkId")?

spring - hibernate : HQL query to directly compare timestamp from database value

java - 如何使用 Hibernate 转换平面结果集

java - 使用 Spring 3 和 Hibernate 4 Autowiring Hibernate session

JAVA : HOW TO Join same table in hibernate and select column's value

java - JPA 未将外键保存到 @OneToMany 关系

java - 尽管数据库中只有一行,但 Jpa 返回多个结果

java - java中sql查询的正确格式

java - "select new Object ... join ... where"的问题