如何为JPQL设置参数如查询?

时间:2013-12-12 07:24:34

标签: java jpql

我将使用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();
    }
}

如何解决此错误。

先谢谢

2 个答案:

答案 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表现得像变量。所以你需要在值字符串

中设置%