Sobrescrever sql de pesquisa do JPA?

5 respostas
A

Olá pessoal,

Existe alguma forma de alterar a sql de pesquisa do JPA?

Ex: O codigo abaixo retorna todos os followUps de determinado processo. Porém, eu preciso que ele retorne somente o último. Acredito que para isso eu teria que sobrescrever a SQL estou certo?

@OneToMany(mappedBy="abreProcesso",cascade=CascadeType.REFRESH, fetch = FetchType.EAGER)
                @Fetch(FetchMode.SELECT)
	private Collection<Followup> followup;

No manual do hibernate diz que tem como fazer, mas nao estou conseguindo com JPA:

5 Respostas

fabiomazzo

Acredito que ou você tenha que repensar esse JPA ou o modelo de dados. Na tela você poderia chamar fazer uma consulta dessa entidade Followup, e não coloca-la dessa maneira.

A

Eu tenho uma classe Processo que pode ter um ou mais FollowUp. Hoje está funcionando, gero os relatorios com a lista dos processos e os followups de cada processo.

O que ocorre agora é que eu preciso fazer um relatorio que mostre somente o ultimo followp!

Qual será a forma correta de fazer isso?

Vlw

fabiomazzo

Acho que a melhor coisa a fazer nesse caso é criar uma Query JPA com Order By Desc na data ou em algum campo para o último retornar primeiro e usar o getSingleResult()

Um Exemplo:

Query query = em.createQuery("SELECT f FROM FollowUp f WHERE f.param= :value Order By f.dataCriacao Desc");
                q.setParameter("value", val1);
               FollowUp followUp = query.getSingleResult();

Abs

A

Entendo,

Nesse caso eu teria que colocar a query dentro do model certo?

Vlw

fabiomazzo

Pode ser no DAO, sem problemas!

Criado 27 de abril de 2010
Ultima resposta 27 de abr. de 2010
Respostas 5
Participantes 2