我将使用LIKE表达式从数据库中获取数据。我的目的是根据我的前缀('Sam%')获得有限的数据。我试图执行如下的查询。但我得到了一个例外,
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 :(得分: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");
答案 1 :(得分:0)
在setParameter中使用%
,如下所示
Query q = em.createQuery("select o from Item o WHERE o.itemName like ':def'");
q.setParameter("def", "" + def + "%");
其中:def
表现得像变量。所以你需要在值字符串
%