Hibernate query

7 respostas
L

Boa tarde estou precisando de ajuda para montar a seguinte query,ja executei no BD e roda legal mas aqui sempre retorna null,
alguem pode dar uma ajuda?

public Estado findEstado(Integer id) {
	session = HibernateUtil.getInstance();	     
        Query query =session.createQuery("select e.sigla,e.estado from estado e,cidade c where c.cidadeid= :id and c.estadoid=e.estadoid ");        
        Estado estado= (Estado) query.setParameter("id", id).uniqueResult();       
        return estado;					       
    
}

Abraços

7 Respostas

renanpto

Cara tenta usa HQL acho que resolve.

flw

rodrigoallemand

Concordo com o Post acima… seria mais facil fazer assim

From Estado E Where e.cidade.id = :id
L

Obrigado pelas dicas pessoal,fiz como tu disse rodrigo mas nao obtive exito estou tomando este erro agora:

14:32:27,203 ERROR [STDERR] 05/03/2008 14:32:27 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: Received 'org.hibernate.QueryException' when invoking action listener '#{cliente.ufs}' for component 'j_id_jsp_801571530_20'
14:32:27,218 ERROR [STDERR] 05/03/2008 14:32:27 javax.faces.event.MethodExpressionActionListener processAction
SEVERE: org.hibernate.QueryException: could not resolve property: Cidade of: com.Lgweb.Tcc.Model.Estado [From com.Lgweb.Tcc.Model.Estado e Where e.Cidade.cidadeid = :id   ]
	at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
	at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1358)
	at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
	at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
	at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:566)
	at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
	at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
	at org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:153)
	at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:460)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4326)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1212)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3525)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)

o minha consulta ta assim agora:

public Estado findEstado(Integer id) {
	session = HibernateUtil.getInstance();	     
        Query query =session.createQuery("From Estado e Where e.Cidade.cidadeid = :id   ");        
        Estado estado=  (Estado) query.setParameter("id", id).uniqueResult();       
        return estado;					           
}

Que pode ser este erro?

rodrigoallemand

Seu erro parece não estar na Query… faça um debug e veja o que esta query retornou… acho que o erro tá depois disso…

L

cara o problema ta na hora de converter o resultado da query, ta dando
java.lang.ClassCastException,como devo proceder para converetr este valor pois ele esta executando a hql ?

L

qual seria o tipo de objeto retornado pois no hql eu uso duas tabelas,“estado e cidade”???

L
consegui resolver assim,um metodo busca a cidade e depois passa o codigo do estado referente aquela cidade para outro metodo que busca o estado que eu desejo:
public Estado findEstado(Integer id) {  
	     session = HibernateUtil.getInstance();         
	         Query query =session.createQuery("From Estado where estadoid= :id");          
	         Estado estado= (Estado) query.setParameter("id", id).uniqueResult();         
	         return estado;                           
	       
	 }    
 public Cidade findCity(Integer id) {  
     session = HibernateUtil.getInstance();         
         Query query =session.createQuery("From Cidade  where  cidadeid= :id  ");          
         Cidade cidade= (Cidade) query.setParameter("id", id).uniqueResult();         
         return cidade;                           
       
 }

mais eu gostaria de saber se naum tem como fazer isto em um unico select?

Criado 2 de abril de 2008
Ultima resposta 2 de abr. de 2008
Respostas 7
Participantes 3