setFirstResult(Hibernate) + SQLServer = BUG?

4 respostas
A

Uso o hibernate + spring e minha aplicação conecta (sem problemas) com 3 banco de dados.
Oracle, Sybase 12.0 e SQLServer 2000

Estou tendo um problema que está me cheirando a [color=“darkred”]BUG[/color].
Meus métodos são todos paginados… setFirstResult e setMaxResults.

Mas, somente no SQLServer tenho problemas.
Qdo coloco setFirstResult(x); sendo x > 0, ele dá erro.

Por exemplo, se quero pegar do registro 10 ao 20.
Faço:

query = getHibernateTemplate().getNamedQuery(getSession(), "IntrInventario.findAll"); query.setFirstResult(10); query.setMaxResults(20); result = query.list();
no sql ele faz:

Mas somente qdo o query.setFirstResult(X) tem X >0 dá o erro:

net.sf.hibernate.exception.SQLGrammarException: Could not execute query at net.sf.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:58) at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) at net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java:4131) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1557) at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:49) at br.com.polaris.intradesk.dao.Hibernate.IntrInventarioDAOImpl.findAll(IntrInventarioDAOImpl.java:54) at br.com.polaris.intradesk.business.Impl.IntradeskImpl.IntrInventarioFindAll(IntradeskImpl.java:88) 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:324) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:284) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174) at $Proxy2.IntrInventarioFindAll(Unknown Source) at br.com.polaris.intradesk.business.test.IntrInventarioTest.testFindAllPage(IntrInventarioTest.java:111) 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:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186) [color=darkblue]Caused by: java.sql.SQLException: Invalid column name id_chave2_.[/color]

Caso eu coloque query.setFirstResult(0); Executa sem problemas
Nos bancos de dados Oracle e Sybase, eu faço identico e não ocorre nenhum erro.

[size=“18”]Será BUG ???[/size]

4 Respostas

A

Alguem tem uma idéia… ?

Não era p/ ser Enquete… :roll:

farnetani

Fera…estou usando o webwork+hibernate

Preciso urgente fazer uma paginação para consultas em .jsp

Não tenho nem idéia…vc não tem nada pra me dar uma luz ???

A

“farnetani”:
Fera…estou usando o webwork+hibernate

Preciso urgente fazer uma paginação para consultas em .jsp

Não tenho nem idéia…vc não tem nada pra me dar uma luz ???

Claro que tenho.
Os métodos no hibernate são:

query.setFirstResult(10); query.setMaxResults(20);

mais detalhes estão no manual do hibernate 9.3.2 The Query Interface.
Faça download do manual nesse endereço:
http://www.hibernate.org/5.html

B

Cara, faça o seguinte, atualize o seguinte .jar…: Substitua jtds_0.9_rc1.jar por jtds-1.1.jar ou superior, a jtds-1.2.jar

Estava usando a versão antiga desse jar e descobri que tinha um bug… Depois da atualização o erro de paginação cessou.

Criado 5 de abril de 2005
Ultima resposta 3 de nov. de 2006
Respostas 4
Participantes 3