Query no Hibernate

1 resposta
M

Boas Galera…

Alguém sabe me dizer se estou procedendo correto no código abaixo?

Query consulta = em.createQuery("select relatorio from Relatorios relatorio where " +
										"UPPER(autor) LIKE '%' || UPPER('" +	pessoa + "') || '%' or " +
										"UPPER(escritor) LIKE '%' || UPPER('" +pessoa + "') || '%' or " +
										"UPPER(editora) LIKE '%' || UPPER('" + pessoa + "') || '%'" +
										"' and data >='" + data_inicial + 
										"' and data <='" + data_final + "'" + " order by data");
		List<Relatorios> relatorios = consulta.getResultList();
		em.getTransaction().commit();
		emf.close();

Na minha tabela eu tenho 3 colunas, autor, escritor e editora. E gostaria que na busca identificasse se localiza em alguma dessas colunas independente se esta maiúsculo ou minusculo.

Obrigado.

1 Resposta

ErickRAR

Não.
Não concatene Strings quando for usar query. Você pode sofrer sql injection.
Esse tutorial irá te ajudar em como passar os paramentros corretamente.

O correto do Like é, por exemplo:

No caso da sua data, acho que o correto seria utilizar BETWEEN:

SELECT * FROM RELATORIOS WHERE DATA BETWEEN (datainicial) and (datafinal) //verifique se a data inical é menor que a final antes de fazer a consulta
Você não está fazendo uma transação(inserindo,atualizando uma linha etc), está fazendo uma consuta, então não é necessário o getTransaction().commit();

Criado 21 de janeiro de 2014
Ultima resposta 21 de jan. de 2014
Respostas 1
Participantes 2