2013-12-12 107 views
1

我將使用LIKE表達式從數據庫中獲取數據。我的目的是根據我的前綴('Sam%')獲取有限的數據。我試圖執行下面的查詢。但我有一個例外,如何爲JPQL查詢設置參數?

java.lang.IllegalArgumentException: You have attempted to set a parameter value using a name of def that does not exist in the query string select o from Item o WHERE o.itemName like ':def%'. 

我的方法是,

public List<Item> getSuggestedData(String def) { 
    EntityManager em = getEntityManager(); 
    try { 
     Query q = em.createQuery("select o from Item o WHERE o.itemName like ':def%'"); 
     q.setParameter("def", def); 
     return q.getResultList(); 
    } finally { 
     em.close(); 
    } 
} 

如何修復這個錯誤。

由於提前

+0

如果你想在jpql中使用'Like'操作比使用標準API更好。 –

回答

1

更新

Query q = em.createQuery("select o from Item o WHERE o.itemName like ':def%'"); 

Query q = em.createQuery("select o from Item o WHERE o.itemName like :def"); 
0

中的setParameter使用%像下面

Query q = em.createQuery("select o from Item o WHERE o.itemName like ':def'"); 
q.setParameter("def", "" + def + "%"); 

其中:def表現得像變量。所以你需要在值字符串中設置%字符串