JPA QL paraméterezés

Fórumok

EJB-vel kapcsolatos kalandjaim folytatódnak... Jelenleg a probléma, hogy van egy ilyen kód:


	public List<Book> findBasic(String key) {
		Query q = em.createQuery("SELECT a FROM Book a " +
			"WHERE a.title LIKE '%:key%' " +
			"OR a.subtitle LIKE '%:key%' " +
			"OR a.desc LIKE '%:key%'");
		q.setParameter("key", key);
		return q.getResultList();
	}

A szervletből ez így hívódik:


		String key = request.getParameter("key");
		List<Book> res = bookBean.findBasic(key);

És erre egy ilyen kivételt kapok:


javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: Could not locate named parameter [key]

Erre valakinek valami tipp, hogy miért nem megy?

Hozzászólások

szerintem csináld úgy, hogy LIKE :key és a q.setParameter("key", "%" + key + "%"); legyen.

Köszi, megfogadtam mindkét tanácsot és most megy.