Sem solução por hora. Isso faz com que algumas queries simplesmente não funcionem com Derby e FireBird.
[Hibernate] Criando alias no 'where'
4 Respostas
Olá,
Curiosidade!
Qual versao do Hibernate?
Como ta montada essa query no Hibernate?
Nunca vi o Hibernate montar um SQL assim.
]['s
Num consulta simples assim:
select
this_.PkTpDoc as y0_,
this_.Descricao as y1_
from
tpdoc this_
where
y0_ = ?
O Hibernate tá criando esse alias “y0_”, porém de acordo com isso daqui:
http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
Não é padrão SQL colocar alias na cláusula where…
Alguém tem idéia de como solucionar esse problema?
Obrigado!
Galera… não é a melhor das soluções, mas por hora estou usando:
Restrictions.sqlRestriction()
Rola até uma variavelzinha {alias} lá que substitui pelo nome da tabela…
Abraços!
Última versão com annotations, sou discípulo do projeto que tá na Mundo Java desse mês… hehehehe (by Paulo Silveira :thumbup: )
Criteria c = getSession().createCriteria(classe);
for(;;/*aqui tinha o for que eu tirei*/)
c.add(Restrictions.ilike(key, valor));
ProjectionList pl = Projections.projectionList();
for(String coluna : colunas)
pl.add(Projections.property(coluna), coluna);
c.setProjection(pl);
c.setResultTransformer(Transformers.aliasToBean(classe));
List<VO> l = new ArrayList<VO>();
for(Iterator it = c.list().iterator(); it.hasNext();) {
l.add((VO)CopiadorObjetos.copiarObjeto(it.next()));
}
return l.iterator();
É só usar projections que ele faz isso que eu to falando…