2017-03-14 206 views
2

は、次のクエリを休止することによって実行されたスプリングデータのfindAll(ページング可能)をexecutiong場合:
SQLServerException:インデックス1が範囲外であるエンティティの春データのfindAll(ページング可能)メソッドが呼び出されると

select TOP(?) customer0_.id as id1_0_, customer0_.name as name2_0_ from customer customer0_ 


次のクエリが実行された後:

Hibernate: select customer0_.id as id1_0_, customer0_.name as name2_0_ from customer customer0_ order by customer0_.id asc offset 0 rows fetch next 20 rows only 

execptionは

を上げています
o.h.engine.jdbc.spi.SqlExceptionHelper : could not execute query [select customer0_.id as id1_0_, customer0_.name as name2_0_ from customer customer0_ order by customer0_.id asc] 

com.microsoft.sqlserver.jdbc.SQLServerException: The index 1 is out of range. 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:206) 
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:940) 
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(SQLServerPreparedStatement.java:954) 
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setInt(SQLServerPreparedStatement.java:1249) 
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setInt(HikariProxyPreparedStatement.java) 
at org.hibernate.dialect.pagination.SQLServer2005LimitHandler.bindLimitParametersAtStartOfQuery(SQLServer2005LimitHandler.java:132) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1950) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1909) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1887) 
at org.hibernate.loader.Loader.doQuery(Loader.java:932) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349) 
at org.hibernate.loader.Loader.doList(Loader.java:2615) 
at org.hibernate.loader.Loader.doList(Loader.java:2598) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430) 
at org.hibernate.loader.Loader.list(Loader.java:2425) 
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370) 
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1481) 
at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1441) 
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1410) 
at org.hibernate.query.Query.getResultList(Query.java:146) 
at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:72) 
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.readPage(SimpleJpaRepository.java:589) 
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:409) 
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:377) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:504) 
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:489) 
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:461) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
at com.sun.proxy.$Proxy170.findAll(Unknown Source) 
at sa.tvtc.farm.web.rest.CustomerResource.getAllCustomers(CustomerResource.java:107) 
at sa.tvtc.farm.web.rest.CustomerResource$$FastClassBySpringCGLIB$$48eccfb1.invoke(<generated>) 
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
at com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:48) 
at com.ryantenney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:34) 
at com.ryantenney.metrics.spring.AbstractMetricMethodInterceptor.invoke(AbstractMetricMethodInterceptor.java:59) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656) 
at sa.tvtc.farm.web.rest.CustomerResource$$EnhancerBySpringCGLIB$$9b6861c0.getAllCustomers(<generated>) 

構成:

アプリケーションdev.yml

spring: 
datasource: 
    type: com.zaxxer.hikari.HikariDataSource 
... 
jpa: 
    database-platform: org.hibernate.dialect.SQLServer2012Dialect 
    database: SQL_SERVER 

のpom.xml

<hibernate.version>5.2.8.Final</hibernate.version> 
<hikaricp.version>2.6.0</hikaricp.version> 
<mssql-jdbc.version>6.1.0.jre8</mssql-jdbc.version> 
<liquibase-hibernate5.version>3.6</liquibase-hibernate5.version> 

    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>mssql-jdbc</artifactId> 
     <version>${mssql-jdbc.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.github.sabomichal</groupId> 
     <artifactId>liquibase-mssql</artifactId> 
     <version>${liquibase-mssql.version}</version> 
    </dependency> 

答えて

3
にHibernateの以前のバージョンの使用は問題を修正し

<hibernate.version>5.2.7.Final</hibernate.version> 
+0

感謝!これは私のために働いた。しかし、それはきれいに見えません。別の方法を見つけましたか?これは休止状態のバグですか? – matthieusb

+1

はい、これはHibernateのバグです。https://hibernate.atlassian.net/plugins/servlet/mobile#issue/HHH-11572 –

関連する問題