2014-10-01 214 views
0

我有此查詢正確轉換JPQL查詢(正常工作):如何使用 「%」

@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:意外的標記:%

如何corectly使用%(我試過 '%:名字%',' %':名稱'%') ?

+0

類似的一個,是指 - http://stackoverflow.com/a/1344198/366964 – 2014-10-01 08:52:57

回答

3

讓我們試試這樣:

@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; 
}