Jpa nÃo aceita a funÇÃo to_char

Boa tarde !

Estou com um problema aparentemente simples mas estou conseguindo soluciona-lo e, acredito que alguem já passou pelo mesmo por isso aqui posto meu apelo !!! ME AJUDEM !!!

Meu usuario pode informar em uma view de pesquisa a data de forma parcial, por Exemplo 2010, 07/2010, 30/07/2010
e no meu bean eu monto a pesquisa da seguinte forma:

String data;

Query q = em.createQuery(“select object(o) from Cliente as o Where to_char(data,‘dd/mm/yyyy’) like '%”+data+"’%");
return q.getResultList();

Preciso utilizar a função TO_CHAR para converter um tipo DATE em STRING, para desta forma, utilizar o LIKE. Ai é que está o problema, o MALDITO DO JPA não está aceitando a função TO_CHAR.

Alguem tem alguma idéia de como resolver este problema ?

Bom, Você pode usar Native Query, mas pq usar um Like em um campo date?
Não é melhor repensar isso?

Cara JPA não é SQL, a função to_char é coisa de SQL, vc pode simplesmente criar o seguinte metodo na sua classe Cliente

public String getStrData(){
   return new SimpleDateFormat("dd/MM/yyyy").format(data);
}

E sua query ficaria assim

 Query q = em.createQuery("select object(o) from Cliente as o Where o.strData like '%"+data+"'%");//Lembrando do padrão JavaBeans
return q.getResultList(); 

Você não está misturando a forma de se usar SQL e JPA? Porque não utilizar um Calendar ao invés de uma String para data? Repare que não é dificil:

Query query = em.createQuery("from Categoria c where c.nascimento = :data"); query.setParameter("data", Calendar.getInstance()); // tratar aqui a data de forma adequada return query.getResultList();Assim você pode transformar a data recebida em um Calendar, e então passa ele como parâmetro. Outra coisa, não use concatenações na query.

Flw! :thumbup:

Obrigado pessoal pelas dicas, consegui resolver o problema usando o createNativeQuery que aceita as funções do SQL na elaboração da consulta.