quarta-feira, 18 de janeiro de 2017

JPA ResultTransformer

Alternativa ao ResultTransformer do Hibernate no JPA.


public class AgendaView implements Serializable {

    private String agendaNome;
    private String contatoNome;

    public AgendaView(String agendaNome,String contatoNome) {
        this.agendaNome = agendaNome;
        this.contatoNome = contatoNome;
    }

    public String getAgendaNome() {
        return agendaNome;
    }

    public String getContatoNome() {
        return contatoNome;
    }

}

    public List<AgendaView> buscarAgenda(String nome){
        if(nome != null && !nome.isEmpty()){
            String query = "select"
                    + " new com.AgendaView(a.nome,c.nome) from " + Agenda.class.getName() +" a"
                        + " left join a.contatos c "
                        + " where "
                        + " lower(a.nome) like '" + nome.toLowerCase() + "%' or"
                        + " lower(c.nome) like '" + nome.toLowerCase() + "%'"
                        + " order by a.nome, c.nome";
            
            TypedQuery<AgendaView> q = em.createQuery(query, AgendaView.class);
            
            
            return (List<AgendaView>) q.getResultList();
        }else {
            return null;
        }            
    }

Nenhum comentário:

Postar um comentário