[Hibernate] Criando alias no 'where'

4 respostas
_fs

Sem solução por hora. Isso faz com que algumas queries simplesmente não funcionem com Derby e FireBird.

4 Respostas

F

Olá,

Curiosidade!

Qual versao do Hibernate?
Como ta montada essa query no Hibernate?

Nunca vi o Hibernate montar um SQL assim.

]['s

Charlie_Brown

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!

Charlie_Brown

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!

Charlie_Brown

Ú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…

Criado 8 de novembro de 2006
Ultima resposta 8 de nov. de 2006
Respostas 4
Participantes 3