Dificuldade para fazer Distinct no HQL

3 respostas
hhullck
Tenho o seguinte select abaixo :
public List<Marca> pesquisa_marca(String nmMarc, int status) {
        EntityManager em = getEntityManager();
        em.getTransaction().begin();
        String jpql = "Select m "
                + "from Marca m where m.nmMarca LIKE :nmMarc and m.status = :status";
        Query query = em.createQuery(jpql);
        query.setParameter("nmMarc", "%"+nmMarc+"%");
        query.setParameter("status", status);
        listMarca = query.getResultList();
        em.getTransaction().commit();
        em.close();
       return listMarca;
    }//fim do meotod Pesquisa Marca

Preciso que ele me traga TODOS DADOS DA MARCA, mas so com nomes diferentes !!

Se eu faço Select Distinct n.nmMarca !! so vai me trazer o nome da marca, mas preciso do Id, nome da marca, fornecedor !!

a Classe e essa ai :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tcc.entidades;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

/**
 *
 * @author Neylon
 */
@Entity
public class Marca implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String nmMarca;
    @ManyToOne
    private Fornecedor fornec;
    private int status;
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNmMarca() {
        return nmMarca;
    }

    public void setNmMarca(String nmMarca) {
        this.nmMarca = nmMarca;
    }

    public Fornecedor getFornec() {
        return fornec;
    }

    public void setFornec(Fornecedor fornec) {
        this.fornec = fornec;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return  nmMarca;
    }



    
}//fim da clase marca

alguma dica de como faço ?

3 Respostas

Hebert_Coelho

DISTINCT traz separa apenas os dados iguais. Se o nome for diferente, ele não irá filtrar esses caras.
Você pode tentar group by, mas não sei c vai ajudar no seu caso.

hhullck

Eu quero filtrar os nomes iguais !! Mas eu quero que traga também os outros dados !!
Nao sei como fazer o select com distinct que traga todos dados, mas que distigua os nomes iguais

hhullck

Com group By deu certo !!
brigado !!

Criado 5 de maio de 2012
Ultima resposta 5 de mai. de 2012
Respostas 3
Participantes 2