Org.hibernate.QueryException:

7 respostas
T

galera, estou com o seguinte problema, estou com uma aplicação web, e estou utilizando o hibernate… e estou tentando fazer um hql
porem ele esta me retornando esse erro…

mas eu nao estou conseguindo entender o pq…

segue abaixo o metodo:

public List<TbSegModulo> listAllModulosByUsuario(Integer usuarioId,Integer perfilStatus,Integer rotinaStatus) {
		log.debug("finding Modulo por Usuario");
		Session sessao = sessionFactory.getCurrentSession();
		sessao.beginTransaction();
		try {
			String sql = "select rotinas.tbSegModulo " +
					"from TbSegUsuario as usu " +
					"inner join usu.tbSegPerfils as perfis " +
					"inner join perfis.tbSegRotinas as rotinas " +
					"where usu.usuarioId = :usuarioId " +
					"and perfis.perfilStatus = :perfilStatus " +
					"and rotinas.rotinaStatus = :rotinaStatus " +
					"group by rotinas.tbSegModulo.moduloId";

			Query criteria = sessao.createQuery(sql);	
			criteria.setParameter("usuarioId", usuarioId);
			criteria.setParameter("perfilStatus", perfilStatus);
			criteria.setParameter("rotinaStatus", rotinaStatus);
			
			List<TbSegModulo> queryList = criteria.list();
			
			if (queryList == null) {
				log.debug("get successful, no instance found");
			} else {
				log.debug("get successful, instance found");
			}
			return queryList;
		} catch (RuntimeException re) {
			log.error("find by example failed", re);
			throw re;
		}
	}

agredeço a ajuda!!

7 Respostas

ignacio83

Cara… mostre o mapeamento de suas entidades… Senão… não temos como te ajudar…

T

segue os mapeamentos

TbSegModulo.hbm.xml

<hibernate-mapping>
    <class name="model.TbSegModulo" table="tb_seg_modulo" catalog="bd_sisvist">
        <id name="moduloId" type="java.lang.Integer">
            <column name="modulo_id" />
            <generator class="identity" />
        </id>
        <many-to-one name="tbSegSistema" class="model.TbSegSistema" fetch="select">
            <column name="sistema_id" not-null="true" />
        </many-to-one>
        <property name="moduloNome" type="string">
            <column name="modulo_nome" length="50" />
        </property>
        <set name="tbSegRotinas" inverse="true">
            <key>
                <column name="modulo_id" not-null="true" />
            </key>
            <one-to-many class="model.TbSegRotina" />
        </set>
    </class>
</hibernate-mapping>

TbsegRotinas.hbm.xml

<hibernate-mapping>
    <class name="model.TbSegRotina" table="tb_seg_rotina" catalog="bd_sisvist">
        <id name="rotinaId" type="java.lang.Integer">
            <column name="rotina_id" />
            <generator class="identity" />
        </id>
        <many-to-one name="tbSegModulo" class="model.TbSegModulo" fetch="select">
            <column name="modulo_id" not-null="true" />
        </many-to-one>
        <property name="rotinaNome" type="string">
            <column name="rotina_nome" length="50" />
        </property>
        <property name="rotinaStatus" type="java.lang.Integer">
            <column name="rotina_status" />
        </property>
        <set name="tbSegPermissaoPerfils" inverse="true">
            <key>
                <column name="rotina_id" not-null="true" />
            </key>
            <one-to-many class="model.TbSegPermissaoPerfil" />
        </set>
    </class>
</hibernate-mapping>

TbsegUsuarios.hbm.xml

<hibernate-mapping>
    <class name="model.TbSegUsuario" table="tb_seg_usuario" catalog="bd_sisvist">
        <id name="usuarioId" type="java.lang.Integer">
            <column name="usuario_id" />
            <generator class="identity" />
        </id>
        <many-to-one name="tbSetUf" class="model.TbSetUf" fetch="select">
            <column name="uf_id" not-null="true" />
        </many-to-one>
        <many-to-one name="sisvistCorretora" class="model.SisvistCorretora" fetch="select">
            <column name="corre_id" not-null="true" />
        </many-to-one>
        <many-to-one name="tbSegTpUsuario" class="model.TbSegTpUsuario" fetch="select">
            <column name="tp_usuario_id" not-null="true" />
        </many-to-one>
        <property name="usuarioNome" type="string">
            <column name="usuario_nome" length="50" />
        </property>
        <property name="usuarioLogin" type="string">
            <column name="usuario_login" length="50" />
        </property>
        <property name="usuarioSenha" type="string">
            <column name="usuario_senha" length="50" />
        </property>
        <property name="usuarioStatus" type="java.lang.Integer">
            <column name="usuario_status" />
        </property>
        <set name="sisvistSolicitacaos" inverse="true">
            <key>
                <column name="usuario_id" not-null="true" />
            </key>
            <one-to-many class="model.SisvistSolicitacao" />
        </set>
        <set name="tbSegPerfilUsuarios" inverse="true">
            <key>
                <column name="usuario_id" not-null="true" />
            </key>
            <one-to-many class="model.TbSegPerfilUsuario" />
        </set>
    </class>
</hibernate-mapping>

TbsegPerfil.hbm.xml

<hibernate-mapping>
    <class name="model.TbSegPerfil" table="tb_seg_perfil" catalog="bd_sisvist">
        <id name="perfilId" type="java.lang.Integer">
            <column name="perfil_id" />
            <generator class="identity" />
        </id>
        <property name="perfilNome" type="string">
            <column name="perfil_nome" length="50" />
        </property>
        <property name="perfilStatus" type="java.lang.Integer">
            <column name="perfil_status" />
        </property>
        <set name="tbSegPerfilUsuarios" inverse="true">
            <key>
                <column name="perfil_id" not-null="true" />
            </key>
            <one-to-many class="model.TbSegPerfilUsuario" />
        </set>
        <set name="tbSegPermissaoPerfils" inverse="true">
            <key>
                <column name="perfil_id" not-null="true" />
            </key>
            <one-to-many class="model.TbSegPermissaoPerfil" />
        </set>
    </class>
</hibernate-mapping>
T

alguem?

Y

Qual eh a mensagem de erro?

rolemberg

Seja se o problema nao eh o tipo de objeto que sua query retorna… o group by retonar um array de Objeto contendo os dados que vc solicitou…para isso sera necessario fazer um tratamento…

T

abaixo segue o stack

org.hibernate.QueryException: could not resolve property: tbSegPerfils of: model.TbSegUsuario [select rotinas.tbSegModulo from model.TbSegUsuario as usu inner join usu.tbSegPerfils as perfis inner join perfis.tbSegRotinas as rotinas where usu.usuarioId = :usuarioId and perfis.perfilStatus = :perfilStatus and rotinas.rotinaStatus = :rotinaStatus group by rotinas.tbSegModulo.moduloId]
	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.FromReferenceNode.resolve(FromReferenceNode.java:94)
	at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:308)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3275)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3067)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
	at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
	at $Proxy0.createQuery(Unknown Source)
	at model.TbSegUsuarioHome.listAllModulosByUsuario(TbSegUsuarioHome.java:184)
	at control.LoginProcessaAction.logar(LoginProcessaAction.java:55)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
	at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
	at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
	at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
	at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Thread.java:619)
Y

Ele esta dizendo que a propriedade tbSegPerfils nao existe no mapeamento da classe tbSegUsuario. E realmente nao está no xml que vc postou.

Criado 9 de dezembro de 2008
Ultima resposta 11 de dez. de 2008
Respostas 7
Participantes 4