[RESOLVIDO] Usar parâmentro na cláusula like

9 respostas
N
String busca = "jpa";
Query query = manager.createQuery("SELECT t FROM Tarefa t WHERE t.descricao LIKE '%=:palavra%'");
query.setParameter("palavra", busca);

Pessoal, estou tentando passar um parâmetro para montar essa query acima mas não ta dando certo, em outras ocasiões não tive maiores problemas, só não estou tendo sucesso para passar um parâmetro para a cláusula like.

Recebo o seguinte erro:
Caused by: org.hibernate.QueryParameterException: could not locate named parameter [palavra]

9 Respostas

P
Query query = manager.createQuery("SELECT t FROM Tarefa t WHERE t.descricao LIKE :palavra");
query.setParameter("%palavra%", busca);
N

pmlm:
Query query = manager.createQuery("SELECT t FROM Tarefa t WHERE t.descricao LIKE :palavra"); query.setParameter("%palavra%", busca);

Olá, ainda continua retornando o erro que não possível localizar o parâmetro.

Exception in thread “main” java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [%palavra%]

Obrigado

H

Faça igual aqui mostra: JPA Consultas e Dicas.

N

Muito obrigado, deu certo!

Se alguém precisar, segue como eu fiz seguindo o post recomendado acima:

Query query = manager.createQuery("SELECT t FROM Tarefa t WHERE t.descricao LIKE :palavra");  
 query.setParameter("palavra", "%" + busca + "%");
P

Certo, eu coloquei as %% no argumento errado… :slight_smile:

A

Galera com fazer uma pesquisa usando criteria like??
a pesquisa seria essa, ele funciona normalmente só precisaria transformar em um
método genérico.

public List<Usuario> listarUsuarioLikeNome(String texto) {
		sessao = HibernateUtil.currentSession();
		tx = sessao.beginTransaction();

		Criteria criteira = sessao.createCriteria(Usuario.class).add(
				Restrictions.ilike("nome", "texto%"));

		List<Usuario> resultados = criteira.list();

		if (resultados == null) {
			JOptionPane.showMessageDialog(null, "Nenhum registro encontrado!");
		}

		sessao.close();

		return resultados;
	}
A

Galera com fazer uma pesquisa usando criteria like??
a pesquisa seria essa, ele funciona normalmente só precisaria transformar em um
método genérico.

public List<Usuario> listarUsuarioLikeNome(String texto) {
		sessao = HibernateUtil.currentSession();
		tx = sessao.beginTransaction();

		Criteria criteira = sessao.createCriteria(Usuario.class).add(
				Restrictions.ilike("nome", "texto%"));

		List<Usuario> resultados = criteira.list();

		if (resultados == null) {
			JOptionPane.showMessageDialog(null, "Nenhum registro encontrado!");
		}

		sessao.close();

		return resultados;
	}
N

Crie um novo tópico para sua dúvida.

H

norbAns:
Crie um novo tópico para sua dúvida.
+1

Criado 25 de novembro de 2012
Ultima resposta 15 de jan. de 2013
Respostas 9
Participantes 4