Hibernate - Usar alias em Projections.sqlProjection

1 resposta
R

Olá amigos estou com um problema, não consigo referenciar os alias criadas com criteriaMatricula.createCriteria("Parcelas","parcela");, em uma
Projections.sqlProjection. O Sql gerado parece que desconhece esse alias (parcela).

Ex:
Criteria criteriaInscricao = daoHbn.createCriteria(Inscricao.class); 	
		Criteria criteriaMatricula = criteriaInscricao.createCriteria("matricula","matricula");
		Criteria criteriaParcela = criteriaMatricula.createCriteria("Parcelas","parcela");
		
		ProjectionList projList = Projections.projectionList();
		
		projList.add(Projections.sqlProjection("sum(parcela.valor) as valor", new String[]{"valor"}, TYPES_DOUBLE), "valor");
		projList.add(Projections.sqlGroupProjection("Extract(MONTH From parcela.dataVencimento) as mes", "mes", new String[]{"mes"}, new Type[]{StandardBasicTypes.INTEGER}));
		projList.add(Projections.sqlGroupProjection("parcela.statusid as statusID", "statusID", new String[]{"statusID"}, new Type[]{StandardBasicTypes.STRING}));
Já tentei usar:
Projections.sqlProjection("sum(parcela.valor) as valor"
Projections.sqlProjection("sum({parcela}.valor) as valor"
Mas nada, é como se ele não interpretasse como alinas.

Ele sempre gera o sql com: inner join Parcela parcela4_ on matricula3_.id=parcela4_.Matriculaid
Se eu botar na projection parcela4_, funciona mas eu não confio muito... rsrrsr

Achei um post dizendo que tinha sido corrigido na versao 3.6.0, atualizei as libs mas continua a mesma coisa.
Por fim no JIRA do hibernate achei o mesmo problema: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2952

Mas o pessoal lá ignorou o 'bug'.
Alquem já conseguiu fazer alguma coisa parecida ?

1 Resposta

R

O ùnico alias que funciona é:
Projections.sqlGroupProjection("month({alias}.DATE)

Mas ele referencia, no meu caso, a ROOT ENTITY = Inscricao.

Criado 6 de dezembro de 2010
Ultima resposta 6 de dez. de 2010
Respostas 1
Participantes 1