Ajuda com erro de query

2 respostas
fabioebner

Amigos… alguem pode me ajudar a resolver q erro e esse:

<blockquote>SEVERE: Nenhum valor especificado para parâmetro 1.

Exception in thread AWT-EventQueue-0 javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not execute query

at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)

at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74)

at br.com.dnasolution.dao.NaturezaDAO.getNaturezaByTitulo(NaturezaDAO.java:21)

at br.com.dnasolution.facade.NaturezaFACADE.getNaturezaByTitulo(NaturezaFACADE.java:36)

at br.com.dnasolution.gui.GerenciarProtocoloJF.selecionarNaturezaDocumento(GerenciarProtocoloJF.java:855)

at br.com.dnasolution.gui.GerenciarProtocoloJF.access$7900(GerenciarProtocoloJF.java:104)

at br.com.dnasolution.gui.GerenciarProtocoloJF$71.actionPerformed(GerenciarProtocoloJF.java:3043)

at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)

at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)

at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)

at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:814)

at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)

at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)

at java.awt.Component.processEvent(Component.java:5803)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4410)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2429)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Caused by: org.hibernate.exception.DataException: could not execute query

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)

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.hql.QueryLoader.list(QueryLoader.java:378)

at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)

at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)

at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65)

 31 more

Caused by: org.postgresql.util.PSQLException: Nenhum valor especificado para parâmetro 1.

at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:146)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:183)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)

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)

 39 more

</blockquote>

tenhoa seguinte named query

@NamedQuery(name = "TbNatureza.findByTitulo", query = "SELECT t FROM TbNatureza t WHERE t.cdTituloCollection = :cdTitulo ORDER BY t.nmNatureza"),

crio a query assim: Query query = ConexaoNotas.getInstance().getCurrentEM().createNamedQuery("TbNatureza.findByTitulo"); query.setParameter("cdTitulo", titulo); return naturezaDAO.getNaturezaByTitulo(query);

essa query e do tipo

mas pq eu retorno o erro de cima?? qdo eu utilizaza TopLink ia tranquilo… agora q mudei para o hibernate da esse erro e o engracado e q eu debugo e na hora de executar a query ele esta com o parametro preenchido, direitinho

alguem sabe o pq?

valeu

2 Respostas

E

Estranho esse comportamento, como se ele nao conseguisse acessar o parametro. Mas tente mudar de:

WHERE t.cdTituloCollection = :cdTitulo
query.setParameter("cdTitulo", titulo);  

//para
WHERE t.cdTituloCollection = ? 
query.setString(0, titulo);
fabioebner

mlka ja descobri obrigado… e pq no toplink ele mesmo ja fazia o join. e no hibernate eu tive q fazer o join na namedquery :smiley:

valeu

Criado 5 de maio de 2009
Ultima resposta 7 de mai. de 2009
Respostas 2
Participantes 2