Search code examples
javajpql

How to set a parameter for JPQL like query?


I'm going to get data from database using LIKE expression. My purpose is getting limited data according to my prefix('Sam%'). I tried to execute a query like below. But I got an Exception,

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%'.

My method is,

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();
    }
}

How can fix this error.

Thanks in Advance


Solution

  • update

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

    to

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