Andre_Fonseca 26 de jan. de 2010
oi,
por acaso sapato é uma coleção dentro de Armario?
caso seja tente fazer assim
createQuery( "from Armario o, IN (o.sapatos) as s where s.idSapato = 284" )
JackOld 26 de jan. de 2010
Exato, acho que não fui bem claro.
Andre_Fonseca 26 de jan. de 2010
oi,
dá uma testada nesse codigo que coloquei ai acima e veja se funciona…
JackOld 26 de jan. de 2010
Aquele erro sumiu agora deu esse aqui
org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN,
JackOld 26 de jan. de 2010
Hum acho que esqueci dos parenteses… :oops:
JackOld 26 de jan. de 2010
Po blz ele executou, só que não está trazendo os atributos do objeto Armário…
JackOld 26 de jan. de 2010
Po e a query que o Hibernate executou eu peguei no console e rodei direto no banco, trouxe os registros certinhos, porém na aplicação nada…
Andre_Fonseca 26 de jan. de 2010
hmm, como você está retornando os valores? posta o código
abs
JackOld 26 de jan. de 2010
Acho q sei o erro porem naum sei a solução, ele está retornando os valores de armário e sapato, porém estava jogando tudo dentro de uma lista de armário. Como resolvo isso??
Andre_Fonseca 26 de jan. de 2010
oi,
a lista de armario está preenchida? você precisa do que? dos sapatos?
posta o código de como você está executando a consulta e retornando os resultados…
JackOld 26 de jan. de 2010
Esse aí é o método que utilizo para retornar…
protected < T extends Serializable > List < T > getPureList ( Class < T > classToCast , String query , Object ... values ) {
Session ses = getSession ();
ses . beginTransaction ();
Query qr = ses . createQuery ( query );
/* for ( int i = 1 ; i <= params . length ; i ++ ) {
qr . setParameter ( i , params [ i - 1 ]);
} */
int count = 0 ;
for ( Object value : values ) {
qr . setParameter ( count ++ , value );
}
List < T > toReturn = qr . list ();
ses . getTransaction () . commit ();
return toReturn ;
}
Andre_Fonseca 26 de jan. de 2010
oi,
já tentou executar sem o setParameter? já verificou se esta lista de valores está correta??
abs
JackOld 26 de jan. de 2010
Rapaz ele retorna um Object[] com os dois objetos certinhos…Só naum sei como consigo entrar neles…
Andre_Fonseca 26 de jan. de 2010
olhando no javadoc
você pode filtrar pelo Armario que quer pesquisar, ou entao converter um Object[] para um List o que for necessário para o seu caso…
Andre_Fonseca 26 de jan. de 2010
oi,
caso você queira fazer a conversão pode fazer algo parecido com isso - onde foo é um Object[]
List & lt ;Object> armarios = Arrays.asList(foo);
for ( Object object : armarios ) {
Armario arm = ( Armario ) object ;
List & lt ;Sapato> sapatos = arm.sapatos;
}
Andre_Fonseca 26 de jan. de 2010
JackOld 26 de jan. de 2010
Cara só vou poder te responder amanhã de manhã quand chegar no trampo, mas valeu pelas dicas…Amnhã confirmo se deu certo.
JackOld 27 de jan. de 2010
Deu java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to model.Armario , não deu pra castiar…
JackOld 27 de jan. de 2010
Bem, pelo que debuguei aqui ele retorna um Object[] sim, porém, bidimensional…Estou vendo se consigo acessar essas posições, mas está difícil.
JackOld 27 de jan. de 2010
Continua dando ClassCastException… Eu peguei na posição 0 como vc disse, porém nessa posição tem outro vetor de Object[]…estranho…
JackOld 27 de jan. de 2010
Solução enviada por André Fonseca e modificada por JackOld (eu):
for ( int i = 0 ; i < resultado.size(); i++ ){
Object [] objetos = { resultado .get ( i ) } ;
List < Object > listObjetos = Arrays .asList ( objetos ) ;
for ( Object object : listObjetos ) {
Object [] obj = ( Object []) object ;
Armario armario = ( Armario ) obj [0 ] ;
List < Sapatos > sapatos = armario .getSapatps () ;
}
}
VALEU A G4J E ANDRÉ FONSECA VCS SÃO SINISTROS!!! HEHE
JackOld 27 de jan. de 2010
Blz, funcionou tmbm…Valeu a atenção…Isso estava me tirando o sono…