Reputation: 159
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
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
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