Ajuda para dar um count em HQL

20 respostas
K

Boa tarde pessoal, alguém poderia me ajudar como pego a quantidade de registros em HQL, sei como utiliza o count, mas em sql, em HQL não estou conseguindo!!!

obrigada.

20 Respostas

V

Query q = session.createQuery("select count(*) from Entidade"); return (Long) q.uniqueResult();Blz? Flw! :thumbup:

K

Boa tarde, alguém tem um exemplo para eftuar pesquisa de data em HQL?

Ex: antes de: Data ou após data.
obrigada.

F

Katarina:
Boa tarde, alguém tem um exemplo para eftuar pesquisa de data em HQL?

Ex: antes de: Data ou após data.
obrigada.


http://www.hibernate.org/hib_docs/reference/en/html_single/#queryhql

K

von.juliano:
Query q = session.createQuery("select count(*) from Entidade"); return (Long) q.uniqueResult();

list.size() ?

D

kirmaier:
von.juliano:
Query q = session.createQuery("select count(*) from Entidade"); return (Long) q.uniqueResult();

list.size() ?

se não for utilizar os dados, somente o valor total mesmo, é besteira pegar o list e depois o tamanho dele…
é melhor usar o count(*) msm… consome menos processamento…

W

como fica o metodo completo pro DAO ?
eu quero retornar apenas um valor para meu managerbean.

e fiz <blockquote>public Integer Contador(Long id){

Session s = HibernateUtil.getSession();

Query q = s.createQuery(“select count(*) from Matricula”);

return q.uniqueResult();

}</blockquote>

mas da errado o retorno, nem com Int tbm nao deu como seria ?

D

WAO:
como fica o metodo completo pro DAO ?
eu quero retornar apenas um valor para meu managerbean.

e fiz <blockquote>public Integer Contador(Long id){

Session s = HibernateUtil.getSession();

Query q = s.createQuery(“select count(*) from Matricula”);

return q.uniqueResult();

}</blockquote>

mas da errado o retorno, nem com Int tbm nao deu como seria ?

esse “um valor” que vc diz seria o número de matrículas?

se for… usa:

pq seu método tem parâmetro id de entrada? ele não é utilizado dentro do seu método…

W

eu vou passar um Idturma, ele vai ter que me da o total de turma que tem dentro da matricula

W

seria assim entao ?

public Integer Contador(Long id){ Session s = HibernateUtil.getSession(); Query q = s.createQuery("select count(*) from Matricula ma ma.aluno.id = :turma"); return (Integer) q.uniqueResult(); }

W

o meu get do bean seria assim ?

public Integer getContador() { contador = new MatriculaDAO().Contador(idTurma); return contador; }

D

pelo que eu entendi do select vc está fazendo o seguinte:

vc está filtrando pelo id do aluno que está dentro da matrícula! se vc estiver realmente fazendo isso, filtrando pelo id, provavelmente só vai retornar “1” pois a ideia do id é ser único dentre os alunos…

a matrícula é exatamente oque? é um conjunto de turmas? talvez eu não tenha entendido a nomenclatura…

D

quais as entidades que vc tem? e qual a relação entre elas, preciso entendero contexto pra tentar te ajudar…

W

certo,
é assim

no xhtml(view) eu seleciono uma turma, ai ele passa o IDturma. ai ele tem que me retornar quantos alunos tem matriculado nessa turma, que fica dentro da tabela MATRICULA e na tabela matricula cada linha tem um ID de uma turma, quero filtrar apenas uma turma X e contar quantos tem

D

uma turma tem N alunos…
e vc quer pegar o nro de alunos de uma X turma… é isso?
turma é uma entidade tbm???

se for isso… tenta isso aqui:

public Long count(Long id) {
	Session s = HibernateUtil.getSession();  
	try{
		s.beginTransaction();
		Query q = s.createQuery("select count(a) from Aluno as a WHERE a.turma.id like :id");
		q.setParameter("id", id);
		return (Long) q.uniqueResult();  
	}catch (Exception e) {
		if (s != null && s.getTransaction().isActive()) {  
			s.getTransaction().rollback();  
		}  
	}finally{
		if (s != null && s.isOpen()) {  
			s.close();  
		} 
	}
}
W

as seguintes entidades sao:
Aluno temos o [Id],[nome]…
Turma temos o [id],[nome]…
Matricula temos o [id],[id do aluno] e [id da turma]

eu quero contar quantos alunos tem numa turma

D

WAO:
as seguintes entidades sao:
Aluno temos o [Id],[nome]…
Turma temos o [id],[nome]…
Matricula temos o [id],[id do aluno] e [id da turma]

eu quero contar quantos alunos tem numa turma

vc tentou o código que passei no ultimo post?

W

tentei ms deu erro, eu to dentro do Dao e do managerbean da Matricula

W

pra fazer o count no sql normal seria

Select Count(turma_id) From Matricula Where turma_id = 1

assim eu consigo ve a contagem de quantos alunos tem da turma de ID 1, e no hql como ficaria ?

D

cola aqui as suas entidades “Matricula” “Turma” e “Aluno”… e cola também o erro que você tomou !!!

ainda não saquei oque matricula tem hver com a parada hauahuahua acho to meio lesado…

W

darkan666, obrigado pela ajuda conseguir aqui

fiz assim DAO:
public Long count(Long id){  
    Session s = HibernateUtil.getSession();    
        Query q = s.createQuery("select count(*) from Matricula ag where ag.turma.id = :turma");  
        q.setParameter("turma", id);  
        return (Long) q.uniqueResult();    }  
}
BEAN
private Long contador;

    public Long getContador() {
        contador =  new MatriculaDAO().count(idTurma);
        return contador;
    }

    public void setContador(Long contador) {
        this.contador = contador;
    }

VALEUUU PELA AJUDA :D

Criado 9 de março de 2009
Ultima resposta 26 de out. de 2012
Respostas 20
Participantes 6