Guevara 8 de out. de 2010
O problema continua:
public List < Imovel > listaDestaque () {
return session .createCriteria ( Imovel .class )
.add ( Restrictions .isNotNull ( "destaque" ))
.setProjection ( Projections .projectionList ()
.add ( Projections .property ( "codImovel" ) .as ( "codImovel" ))
.add ( Projections .property ( "destaque" ) .as ( "destaque" )))
.setResultTransformer ( new AliasToBeanResultTransformer ( Imovel .class ))
.addOrder ( Order .desc ( "dataInclusao" )) .setMaxResults ( 10 ) .list () ;
}
O problema é sql mesmo e não o AliasToBeanResultTransformer. =/
Hibernate :
select
this_ . cod_imovel as y0_ ,
this_ . destaque as y1_
from
Imovel this_
where
y1_ is not null
order by
this_ . data_inclusao desc limit ?
23 : 41 : 50 , 844 WARN [ JDBCExceptionReporter ] SQL Error : 0 , SQLState : 42703
23 : 41 : 50 , 844 ERROR [ JDBCExceptionReporter ] ERRO : coluna "y1_" não existe
Posição : 79
[]s
garcia-jj 9 de out. de 2010
Sem a projection funciona?
Guevara 9 de out. de 2010
E ai Garcia!!!
Sem Projections funciona:
Hibernate :
select
imovel0_ . destaque as destaque28_6_ ,
Só que preciso apenas o código e o valor de destaque pra mandar pra index e mostrar a imagem, não preciso carregar todos os dados, doidera né? O.o
[]s
Guevara 17 de out. de 2010
Fiz uma alteração aqui colocando o aliasToBean, não está dando erro, mas não está passando pelo teste na JSP:
public List < Imovel > listaDestaque () {
return session .createCriteria ( Imovel .class )
.add ( Restrictions .isNotNull ( "destaque" ))
.setProjection ( Projections .projectionList ()
.add ( Projections .property ( "codImovel" ))
.add ( Projections .property ( "destaque" )))
.addOrder ( Order .desc ( "dataInclusao" ))
.setResultTransformer ( Transformers .aliasToBean ( Imovel .class ))
.setMaxResults ( 10 ) .list () ;
}
Hibernate :
select
this_ . cod_imovel as y0_ ,
this_ . destaque as y1_
from
Imovel this_
where
this_ . destaque is not null
order by
this_ . data_inclusao desc limit ?
O teste na JSP é este:
<c:when test= " ${ empty imovel . destaque } " >
Deve estar chegando null ai, tentei ver o que aparecia no break-point nessa linha, mas não consegui visualizar o valor do destaque pela IDE.
garcia-jj 17 de out. de 2010
Hmm, desculpe Guevara, perdi esse tópico de vista.
Nunca usei esse tipo de consulta via projections, aí não sei se consigo te ajudar. Mas você pode fazer um sysout aí no resultado da tua consulta, algo como:
public List < Imovel > listaDestaque () {
List<Imovel> lista = session.createCriteria(Imovel.class)
.add(Restrictions.isNotNull("destaque"))
.setProjection(Projections.projectionList()
.add(Projections.property("codImovel"))
.add(Projections.property("destaque")))
.addOrder(Order.desc("dataInclusao"))
.setResultTransformer(Transformers.aliasToBean(Imovel.class))
.setMaxResults(10).list() ;
for(Imovel imovel : lista ) {
System . out . println ( imovel . xxx );
}
}