Problemas ao tentar trazer o resultlist de um @SqlResultSetMapping

1 resposta
EuclidesFilizola

Boa tarde pessoal,

estou tentando trazer um resultado com duas entidades da seguinte forma:

String sql = "select new NotaFiscalBens(nfbens.codNotaFiscalBens, nfbens.valor, nfbens.numQuantidade, nfbens.numGarantia, nfbens.observacao," +
				"nfbens.codBens, nfbens.notaFiscal, nfbens.codInclusao, nfbens.depreciacao ) , Depreciacao(dep.valorDepreciacao) FROM NotaFiscalBens nfbens, " +
				"Depreciacao dep where nfbens.notaFiscal.codNotaFiscal = '63' AND dep.codDepreciacao = nfbens.depreciacao order by nfbens.codInclusao";
		
		final Query query = entityManager
		.createNativeQuery(sql,"listaBensNf");
		
		List<NotaFiscalBens> lista =  query.getResultList();
		
		entityManager.getTransaction().commit();
		entityManager.close();

a tabela seguinte:

@Entity
@Table(name="tbsifn_notafiscalbens")
@SqlResultSetMapping(name="listaBensNf",
		  
		     entities={  
		         @EntityResult(entityClass=NotaFiscalBens.class),  
		         @EntityResult(entityClass=Depreciacao.class),
		        
		     }  
)

e me traz o seguinte erro:

14/05/2010 15:57:37 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/pages/pesquisa/PesquisarNotaFiscal.xhtml]
javax.faces.FacesException: javax.el.ELException: /pages/pesquisa/PesquisarNotaFiscal.xhtml @176,84 value="#{notaFiscalMBean.listaDeBensNotaFiscal}": javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
	at javax.faces.component.UIData.getValue(UIData.java:585)
	at org.ajax4jsf.component.UIDataAdaptor.getValue(UIDataAdaptor.java:1624)
	at org.ajax4jsf.component.SequenceDataAdaptor.getDataModel(SequenceDataAdaptor.java:65)
	at org.ajax4jsf.component.SequenceDataAdaptor.createDataModel(SequenceDataAdaptor.java:59)
	at org.richfaces.component.UIDataTable.createDataModel(UIDataTable.java:120)
	at org.ajax4jsf.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:621)
	at org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:339)
	at org.richfaces.renderkit.AbstractTableRenderer.encodeTableStructure(AbstractTableRenderer.java:138)
	at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:160)
	at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:148)
	at org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:100)
	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
	at javax.faces.component.UIData.encodeBegin(UIData.java:879)
	at org.ajax4jsf.component.UIDataAdaptor.encodeBegin(UIDataAdaptor.java:1202)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:275)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:387)
	at org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:382)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:578)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:510)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
	at java.lang.Thread.run(Thread.java:619)
Caused by: javax.el.ELException: /pages/pesquisa/PesquisarNotaFiscal.xhtml @176,84 value="#{notaFiscalMBean.listaDeBensNotaFiscal}": javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)
	at javax.faces.component.UIData.getValue(UIData.java:582)
	... 61 more
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:75)
	at br.gov.ce.srh.patrimonio.dao.NotaFiscalBensDAO.listaDeNFsBensPorNFs(NotaFiscalBensDAO.java:56)
	at br.gov.ce.srh.patrimonio.faces.NotaFiscalMBean.getListaDeBensNotaFiscal(NotaFiscalMBean.java:453)
	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 javax.el.BeanELResolver.getValue(BeanELResolver.java:292)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:118)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
	... 62 more
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2223)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
	at org.hibernate.loader.Loader.list(Loader.java:2099)
	at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
	at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
	at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
	at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66)
	... 74 more
Caused by: org.postgresql.util.PSQLException: ERROR: NEW used in query that is not in a rule
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
	at org.hibernate.loader.Loader.doQuery(Loader.java:674)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.doList(Loader.java:2220)
	... 81 more

Alguém teria alguma luz ?

1 Resposta

T

Você misturou query nativa com JPAQL. O Operador new é para queries JPA.

Da maneira que sua select esta, não precisa utilizar sqlNativa e SqlResultSetMapping.

E outra, vc pode retornar direto assim:

"SELECT nfbens, dep FROM NotaFiscalBens nfbens, " +
“Depreciacao dep where nfbens.notaFiscal.codNotaFiscal = ‘63’ AND dep.codDepreciacao = nfbens.depreciacao order by nfbens.codInclusao”;

Criado 14 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 1
Participantes 2