Galera, estou com um probleminha conhecido, sobre o addOrder do criteria.
Eu tenho um bean de Rua que contem um campo bairro que eh um bean Bairro.
So q esse bairro é uma chave composta de Rua(composite-id).
Eu queria dar um Order.asc pelo nome do bairro, mais nao to conseguindo. Ja tentei usar o alias como indicado nos outros posts, e nao funciona. O alias funciona se o atributo nao for uma chave composta, com chave composta o alias nem é encontrato. Fiz assim:
Criteria ct = this.session.createCriteria(RuaBean.class);
ct.createAlias("bairro","bar").addOrder(Order.asc("bar.nomBairro"));
mais nao funciona, da o erro:
11:52:54,718 WARN JDBCExceptionReporter:77 - SQL Error: 904, SQLState: 42000
11:52:54,733 ERROR JDBCExceptionReporter:78 - ORA-00904: “BAR1_”.“NOM_BAIRRO”: identificador inválido
Exception in thread “main” org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) …
O SQL Gerado:
Hibernate:
select
this_.cod_rua as cod1_9_0_,
this_.cod_bairro as cod2_9_0_,
this_.cod_cidade as cod3_9_0_,
this_.cod_uf as cod4_9_0_,
this_.cod_tipo_rua as cod5_9_0_,
this_.cod_usuario_criacao as cod6_9_0_,
this_.nom_rua as nom7_9_0_,
this_.dth_criacao as dth8_9_0_,
this_.dth_alteracao as dth9_9_0_,
this_.cod_usuario_alteracao as cod10_9_0_,
this_.ind_bloqueado as ind11_9_0_
from
admin.tb_rua this_
order by
bar1_.nom_bairro asc
Ele nao faz o join na tabela, porem se esse objeto bairro nao fosse uma chave composta, funciona. Help please
Vlw
_fs
Maio 14, 2008, 5:46pm
#2
Rua tem um Componente que contém o Bairro ou está declarado diretamente na classe?
Se me lembro bem há alguns problemas com composite-ids e Criterias.
Exato, nao consigo ordernar se for uma composite id que seja um objeto de referencia. Consegui isso usando hql