【发布时间】:2014-11-26 01:33:57
【问题描述】:
我有这个查询(工作正常):
@Override
public List<Product> getProductsByName(String name) {
Query q = em.createQuery("SELECT p FROM Product p WHERE p.productName LIKE '%"+name+"%'");
@SuppressWarnings("unchecked")
List<Product> pro = q.getResultList();
return pro;
}
但我想将它转换成这个(使用 .setParameter()):
@Override
public List<Product> getProductsByName(String name) {
Query q = em.createQuery("SELECT p FROM Product p WHERE p.productName LIKE %:name %")
.setParameter("name", name);
@SuppressWarnings("unchecked")
List<Product> pro = q.getResultList();
return pro;
}
在这种情况下,我得到: java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:%
如何正确使用 %(我试过 '%:name%', '%':name'%')?
【问题讨论】: