我想写一个像这样的查询
@Query("select p from Product p where p.name = ?1 or p.desc like %?1%")
但它给了我例外
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: % near line 1,
我尝试将%替换为'%'或连接查询字符串,如下所示:"选择...喜欢'%'" +"?1" +"'%'"但没有运气,请帮帮我
答案 0 :(得分:4)
如果您使用的是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注释中使用%
,而是需要在参数本身中添加它
答案 1 :(得分:0)
使用CONCAT如下:
@Query("select p from Product p where p.name = ?1 or p.desc like CONCAT('%',?1,'%') ")
答案 2 :(得分:-1)
使用:
。你可以使用标识符。
@Query("select p from Product p where p.name = :productName or p.desc like :productDescription")
然后
query.setParameter("productName", theName);
查看JPQL规范,了解JPQL和SQL之间的区别。
更新:对于LIKE
运算符,%
放在值中,而不是放在JPQL中。
query.setParameter("productDescription", "%" + partialDescription + "%");