SubConsulta Criteria Não funciona[Resolvido]

7 respostas
V

Pessoal é o seguinte tenho uma entidade chamada aluno e uma outra entidade chamada resultado. Na entidade aluno existe um atributo chamado areaVestibular e o que eu quero é trazer todos os alunos que possuem essa área com valor exatas e logo depois ir na tabela resultado e trazer apenas os resultados dos alunos dessa área soma e realizar o somatório do total de acertos desses alunos.Tentei fazer isso usando criteria mas não tive sucesso agradeço pela ajuda. Quando executo esse método o hibernate lança a seguinte exceção org.hibernate.QueryException: not an association: cpfMatricula.

Basicamente é trazer o total de acertos da área exatas. Mas preciso fazer um filtro.

public List<Integer> buscarMediArea(long idProva,String idTurma,String area){
		
		session=CreateSessionFactory.openSession();

		Criteria criteria=session.createCriteria(Resultado.class);
		
		criteria.add(Restrictions.eq("prova.idProva", idProva));
		criteria.add(Restrictions.eq("turma.idTurma", idTurma));
		
		Criteria subCriteria=criteria.createCriteria("aluno.cpfMatricula");
		
		subCriteria.add(Restrictions.eq("areaVestibular", area));
		
		
		subCriteria.setProjection(Projections.sum("quantidadeAcertos"));
		
		List total=subCriteria.list();
		
		return  total;
		
	}

7 Respostas

sephil

Olá,

Como está o relacionamento do atributo cpfMatricula da sua classe aluno?

V

cpfMatricula é uma chave estrageria em resultado. cpfMatricula é pk de aluno, onde um aluno ter 1 ou vários resultados e um resultado é apenas de um aluno.

sephil

Entendi.
Pode postar o código do mapeamento desse relacionamento nas suas entidades? ‘-’

V

Entidade Aluno

@Entity
@Table(name = "Aluno")
public class Aluno extends Usuario {

	@OneToMany(mappedBy = "aluno", fetch = FetchType.LAZY)
	private Collection<Resultado> resultados;

}

Entidade resultado

@Entity
@Table(name = "resultado")
public class Resultado {

	@ManyToOne
	@JoinColumn(name="cpfMatricula")
	private Aluno aluno;

}
sephil

Tenta assim:

Criteria subCriteria=criteria.createCriteria("aluno");
V

funcionou cara valeu

sephil

Opa! estamos ai o/

Criado 8 de março de 2012
Ultima resposta 8 de mar. de 2012
Respostas 7
Participantes 2