Opa 
Tenho uma query do hibernate que monto da seguinte forma:
public List buscarGrProc(List listaAgendamento) {
Session session = InitSessionFactory.getInstance().getCurrentSession();
Query query = null;
Iterator i = listaAgendamento.iterator();
while(i.hasNext()){
AgendamentoBean agendamento = (AgendamentoBean) i.next();
query = session.createSQLQuery("select * from grupo_procedimento " +
"inner join procedimento on grupo_procedimento.grupo_procedimento_id = procedimento.procedimento_id " +
"inner join sala on procedimento.procedimento_id = sala_procedimento_id " +
"inner join unidade on sala.sala_unidade_id = unidade.unidade_id where unidade.unidade_id = " + agendamento.getAgendamentoRelacionamentoID());
GrupoProcedimentoBean grupoProcedimento = new GrupoProcedimentoBean();
grupoProcedimento = (GrupoProcedimentoBean)query.uniqueResult();
}
return null;
}
Queria saber pq eu não posso fazer o cast direto e pq só funciona se eu montar com a query hql? Como que eu altero isso para a hql?
[]'s
Troca o "select * from grupo_procedimento "
por
“select gp from grupo_procedimento as gp”
E tambem mostre pra gente o que o ClassCast esta reclamando. Acho que ele tava te devolvendo Object[].
O que seria o gp?
Paulo, tenho outro problema…acho que deve ser besta pq nessa minha query, notei que ela retorna o resultado de todas as tabelas do inner join e eu só preciso os dados da tabela grupo_procedimento, a sua alteração me parece que vai trazer somente a tabela em questão, estou correto?
[quote=Paulo Silveira]Troca o "select * from grupo_procedimento "
por
“select gp from grupo_procedimento as gp”
E tambem mostre pra gente o que o ClassCast esta reclamando. Acho que ele tava te devolvendo Object[].
[/quote]
Alterei a query e recebi o seguinte erro:
Resolvi!
Esqueci de alterar outro campo, mas ele está me trazendo de uma forma estranha, como se fosse uma única coluna, ai não consigo setar pro objeto, tem alguma idéia amigos?
O mapeamento ta correto, mas como ele retorna uma ‘única coluna’, acontece isso! Preciso receber como String e ‘cortar’ em cada vírgula? Isso não seria uma gambiarra?
Mudei a query para:
while(i.hasNext()){
AgendamentoBean agendamento = (AgendamentoBean) i.next();
query = session.createSQLQuery("select grupo_procedimento_id, grupo_procedimento_nome from grupo_procedimento " +
"inner join procedimento on grupo_procedimento.grupo_procedimento_id = procedimento.procedimento_id " +
"inner join sala on procedimento.procedimento_id = sala_procedimento_id " +
"inner join unidade on sala.sala_unidade_id = unidade.unidade_id where unidade.unidade_id = " + agendamento.getAgendamentoRelacionamentoID());
GrupoProcedimentoBean grupoProcedimento = new GrupoProcedimentoBean();
//resultado = query.list();
grupoProcedimento = (GrupoProcedimentoBean) query.uniqueResult();
}
E voltei a receber o erro inicial que era:
[]'s
Achei uma solução mas não sei se é a melhor:
SQLQuery sql = session.createSQLQuery("select * from grupo_procedimento " +
"inner join procedimento on grupo_procedimento.grupo_procedimento_id = procedimento.procedimento_id " +
"inner join sala on procedimento.procedimento_id = sala_procedimento_id " +
"inner join unidade on sala.sala_unidade_id = unidade.unidade_id where unidade.unidade_id = " + agendamento.getAgendamentoRelacionamentoID()).addEntity("br.com.bean.grupoProcedimento.GrupoProcedimentoBean");
Existe alguma outra solução? Para usar a HQL, eu teria que criar os relacionamentos no xml?
[]'s
chame o addEntity como vc fez antes.
pela sua query, acho q vc nao precisava usar createSQLQuery. Uma query HQL serviria e ai seria mais simples…
Eu pensei nisso mas como a aplicação ta bem fraca e não tem mapeamento nenhum de relacionamento de bancos, não sei se o HQL iria funcionar!
Obrigado pela ajuda
[]'s
realmente nao ia funcioanr se os relacionamentos nao estao mapeados…