Problema com createSQLQuery

Pessoas…

alguém aki por algum acaso sabe me dizer o que acontece com isso aki??

Query query = session.createSQLQuery("SELECT (select count(*) from tel_alarmes tela WHERE TO_CHAR(data,'yyyy-MM-dd') = '" + dataInicio + "' and tela.idequipamento = " + idEquipamento + " and tela.spn = spn.codigo) as total, spn.descricao AS descricao FROM tel_alarmespn spn").addEntity(AlarmesPosicaoCO.class); List<AlarmesPosicaoCO> listaTotal = query.list();

preciso que o que venha do banco ja fiquei mapeado na minha classe AlarmesPosicaoCO, e isso quero colocar dentro de uma lista…

tentei de tudo… essa foi a ultima coisa que tentei!

ele gera esse erro:

org.hibernate.MappingException: Unknown entity: com.controlloc.telematica.componentobjects.AlarmesPosicaoCO at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:513) at org.hibernate.loader.custom.SQLQueryReturnProcessor.getSQLLoadable(SQLQueryReturnProcessor.java:53) at org.hibernate.loader.custom.SQLQueryReturnProcessor.processRootReturn(SQLQueryReturnProcessor.java:119) at org.hibernate.loader.custom.SQLQueryReturnProcessor.processReturn(SQLQueryReturnProcessor.java:98) at org.hibernate.loader.custom.SQLQueryReturnProcessor.process(SQLQueryReturnProcessor.java:87) at org.hibernate.loader.custom.SQLCustomQuery.<init>(SQLCustomQuery.java:105) at org.hibernate.engine.query.NativeSQLQueryPlan.<init>(NativeSQLQueryPlan.java:21) at org.hibernate.engine.query.QueryPlanCache.getNativeSQLQueryPlan(QueryPlanCache.java:113) at org.hibernate.impl.AbstractSessionImpl.getNativeSQLQueryPlan(AbstractSessionImpl.java:140) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:147) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164) at com.controlloc.telematica.dataactions.AlarmesAction.getQtdeTotalAlarmesByDataByIdEquipamento(AlarmesAction.java:477) at com.controlloc.telematica.handlers.RelatorioAlarmesHandler.doLoad(RelatorioAlarmesHandler.java:175) 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:585) at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129) at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63) at javax.faces.component.UICommand.broadcast(UICommand.java:106) at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:171) at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:149) at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:320) at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75) at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:97) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)

alguém manja como faço isso!?

valeu

O AlarmesPosicaoCO é uma entidade (Está marcado como @Entity)?

não ta marcado…
mas… fiz isso em outro lugar com um select simprão…
num lance de login de usuário… lá funfo de boa!

a diferença é q lá eu usei o query.uniqueResult();

alguma idéia?

Eu fiz um esquema parecido e funcionou !!! se baseie nele.

@SuppressWarnings("unchecked")
	public List<Menu> listaMenu(Menu menu){
		String sql = " SELECT pai, " +
					 "        codigo, " +
					 "        tipo, " +
					 "        rpad(' ',(level*5))||descricao Descricao " +
					 "   FROM ps_menu m " +
					 "  WHERE m.pai = "+ menu.getCodigo() +
					 "CONNECT BY PRIOR CODIGO = PAI START WITH PAI = 0 ";

		return getSession().createSQLQuery(sql)
		 	.addEntity(Menu.class)
		 	.list();
	}

Mas… como eu poderia fazer para não ter que concatenar o parametro menu.getCodigo(), tipo… usar ? ou :codigo no lugar ?? Alguém poderia nos informar ??

Valew.

depois de mto pesquisar…
e ler o post pela 123144534 vez… entendi… haahahaha (chamada a cobrar…)

seguinte… eu uso um CO como um component object… criamos isso aki…
ele recebe dados temporariamente… e isso não é mapeado no meu hbl.xml
portanto… o java recrama disso… e diz que isso não é uma entidade… isso que estou fazendo então NUNCA DARÁ CERTO! deu com um login pq o que coloquei como entity realmente era uma entidade… mapeada e certinha!

agora EIS MINHA PERGUNTA

posso fazer um hbl.xml e mapear esse CO sem colocar uma tabela?

pq meu select não retorna uma tabela e sim 2 campos de 2 tabelas…

será que teria um jeito de fazer isso???

valeuz pela ajuda desde já!

respondendo o marcelopolis…

pelo que pesquisei…

se usa tipo assim:
.addScalar(argumento_que_vai_na_query, argumento_que_recebe_no_metodo)
se não me engano é assim!

abraços

Como ficaria meu código postado acima usando o .addScalar ??

Valew.

sorry! retire o que postei acima sobre o .addScalar()

é assim…

[code]Query query = sess.createSQLQuery(“SELECT * FROM CATS WHERE NAME like ?”).addEntity(Cat.class);
List pusList = query.setString(0, “Pus%”).list();

query = sess.createSQLQuery(“SELECT * FROM CATS WHERE NAME like :name”).addEntity(Cat.class);
List pusList = query.setString(“name”, “Pus%”).list(); [/code]

abraços

Deus abençoe