Classcast em query do hibernate, como resolver?

Opa :smiley:

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…