begginerAll
begginerAll

Reputation: 159

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

Upvotes: 1

Views: 4119

Answers (2)

Nikson Kanti Paul
Nikson Kanti Paul

Reputation: 3440

use % in setParameter like following

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

where :def is behaving like variable. so you need to set % in value string

Upvotes: 1

Makky
Makky

Reputation: 17461

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");

Upvotes: 2

Related Questions