Query no Hibernate

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.

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