【问题标题】:How to correctly convert JPQL query using "%"如何使用“%”正确转换 JPQL 查询
【发布时间】: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'%')?

【问题讨论】:

标签: java hibernate jpql


【解决方案1】:

让我们试试这个方法:

@Override
public List<Product> getProductsByName(String name) {
  Query q = em.createQuery("SELECT p FROM Product p WHERE p.productName LIKE :name")
  q.setParameter("name", '%'+name+'%');
  @SuppressWarnings("unchecked")
  List<Product> pro = q.getResultList();
  return pro;
}

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 2017-10-29
    • 1970-01-01
    • 2011-07-05
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2023-03-26
    相关资源
    最近更新 更多