HQL porque esta query não funciona?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Flasoft
JavaGuru
[Avatar]

Membro desde: 22/05/2006 15:46:02
Mensagens: 230
Localização: Araraquara (SP interior)
Offline

@NamedQuery(name = "UsuarioBean.listarFuncionalidades", query = "SELECT u.perfil.relPerfilFuncionalidades.chaveComposta.funcionalidade.descricao FROM UsuarioBean u WHERE u.pontos >= u.perfil.relPerfilFuncionalidades.pontosMinimos AND u.idUsuario = UPPER(:idUsuario)")

lança o erro:
4625 [main] ERROR org.hibernate.impl.SessionFactoryImpl - Error in named query: UsuarioBean.listarFuncionalidades
org.hibernate.QueryException: illegal attempt to dereference collection [usuariobea0_.id_usuariousuariobea0_.id_perfilperfil.relPerfilFuncionalidades] with element property reference [chaveComposta] [SELECT u.perfil.relPerfilFuncionalidades.chaveComposta.funcionalidade.descricao FROM br.fs.videos.model.UsuarioBean u WHERE u.pontos >= u.perfil.relPerfilFuncionalidades.pontosMinimos AND u.idUsuario = UPPER(:idUsuario)]
at org.hibernate.hql.ast.tree.DotNode$1.buildIllegalCollectionDereferenceException(DotNode.java:6
at org.hibernate.hql.ast.tree.DotNode.checkLhsIsNotCollection(DotNode.java:564)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:225)
at org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:175)
at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:550)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1147)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRefLhs(HqlSqlBaseWalker.java:5167)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1133)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1993)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1932)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1476)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:580)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:28
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:231)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:484)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:394)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
...

Alguém sabe o porque?
Os nomes de campos estão todos corretos!

This message was edited 1 time. Last update was at 20/04/2010 12:39:52


Blog: http://flasoft.blogspot.com
SCJP5
Achoqueminhabarradeespaçosestácomproblemas
eU connsigg diggtar 500 caratereteres porr minito
[Email] [WWW] [MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

Poste uma parte da sua classe mapeada!

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
Flasoft
JavaGuru
[Avatar]

Membro desde: 22/05/2006 15:46:02
Mensagens: 230
Localização: Araraquara (SP interior)
Offline

Acho q entendi como funciona...
Eu estava esperando mais do hibernate do que ele é capaz...

Antes estava assim:


Para funcionar eu fiz assim:


O que eu imaginava é que se existisse um caminho para chegar em meu resultado dando apenas GETs, eu poderia fazer em HQL que o hibernate se virava para me trazer o resultado!
Mas eu entendi (eu ACHO) que eu tenho que fazer exatamente como eu faria utilizando SQL... pensando da mesma forma, um EntityBean para cada tabela!

Certo?

Blog: http://flasoft.blogspot.com
SCJP5
Achoqueminhabarradeespaçosestácomproblemas
eU connsigg diggtar 500 caratereteres porr minito
[Email] [WWW] [MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

Flasoft wrote:Acho q entendi como funciona...
Eu estava esperando mais do hibernate do que ele é capaz...

Antes estava assim:


Para funcionar eu fiz assim:


O que eu imaginava é que se existisse um caminho para chegar em meu resultado dando apenas GETs, eu poderia fazer em HQL que o hibernate se virava para me trazer o resultado!
Mas eu entendi (eu ACHO) que eu tenho que fazer exatamente como eu faria utilizando SQL... pensando da mesma forma, um EntityBean para cada tabela!

Certo?


Basicamente isso, cada classe anotada como Entity, representa uma tabela do seu banco, e que cada atributo dessa classe representa uma coluna da sua tabela.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team