标准,有可能吗?

时间:2013-10-22 21:22:43

标签: java sql hibernate-criteria

好吧,我有以下问题,通过设置昵称(别名)来执行表之间的连接,我需要进行解码,使用别名别名,但要使用因为它不能识别使用纯SQL。

如何返回定义表格条件的名称?我正在使用sqlGroupProjection,如果你可以建议另一种方式。

Criteria criteria = dao.getSessao().createCriteria(Chamado.class,"c");

criteria.createAlias("c.tramites","t").setFetchMode("t", FetchMode.JOIN);

projetos.add( Projections.rowCount(),"qtd");

criteria.add(Restrictions.between("t.dataAbertura", Formata.getDataD(dataInicio, "dd/MM/yyyy"), Formata.getDataD(dataFim, "dd/MM/yyyy")));

projetos.add(Projections.sqlGroupProjection("decode(t.cod_estado, 0, 0, 1, 1, 2, 1, 3, 2, 4, 1, 5, 3)  as COD_ESTADO",
             "decode(t.cod_estado, 0, 0, 1, 1, 2, 1, 3, 2, 4, 1, 5, 3)", 
             new String[]{"COD_ESTADO"}, 
             new Type[]{Hibernate.INTEGER}));

criteria.setProjection(projetos);

List<Relatorio> relatorios = criteria.setResultTransformer(Transformers.aliasToBean(Relatorio.class)).list();

按条件生成的SQL:

select count(*) as y0_, 

       decode(t.cod_estado, 0, 0, 1, 1, 2, 1, 3, 2, 4, 1, 5, 3) as COD_ESTADO 

from CHAMADOS this_  

 inner join TRAMITES t1_ on this_.COD_CHAMADO = t1_.COD_CHAMADO  

where t1_.DT_ABERTURA between ? and ?  

group by decode(t.cod_estado, 0, 0, 1, 1, 2, 1, 3, 2, 4, 1, 5, 3)

0 个答案:

没有答案