spring-data-jpa
spring-data-jpa copied to clipboard
Transaction Rollback error on not finding countQuery from 2.6.4 onwards
I am seeing this error from 2.5.6 version onwards. In previous versions, I am not getting this error.
While initializing JPA repositories(calling getRepository() method), We are getting exception that transaction is marked as rollback. I can see below exception stack trace. On going through stack trace, It seems Spring Data JPA is trying to find countQuery for the Page queries. On not finding count query, Spring Data JPA is throwing this exception. On receiving this exception, Hibernate is marking the transaction as rollback.
Is countQuery is mandatory for queries which uses Page? As per the below documentation, It's optional.
https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/Query.html#countQuery--
java.lang.IllegalArgumentException: No query defined for that name [RestrictedEntity.findByEntityIds.count]
buildQueryFromName:926, AbstractSharedSessionContract (org.hibernate.internal)
createNamedQuery:902, AbstractSharedSessionContract (org.hibernate.internal)
createNamedQuery:114, AbstractSharedSessionContract (org.hibernate.internal)
invoke0:-1, NativeMethodAccessorImpl (jdk.internal.reflect)
invoke:62, NativeMethodAccessorImpl (jdk.internal.reflect)
invoke:43, DelegatingMethodAccessorImpl (jdk.internal.reflect)
invoke:566, Method (java.lang.reflect)
invoke:362, ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler (org.springframework.orm.jpa)
createNamedQuery:-1, $Proxy151 (com.sun.proxy)
hasNamedQuery:115, NamedQuery (org.springframework.data.jpa.repository.query)
getCountQuery:201, JpaQueryLookupStrategy$DeclaredQueryLookupStrategy (org.springframework.data.jpa.repository.query)
resolveQuery:164, JpaQueryLookupStrategy$DeclaredQueryLookupStrategy (org.springframework.data.jpa.repository.query)
resolveQuery:252, JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy (org.springframework.data.jpa.repository.query)
resolveQuery:87, JpaQueryLookupStrategy$AbstractQueryLookupStrategy (org.springframework.data.jpa.repository.query)
lookupQuery:102, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
lambda$mapMethodsToQuery$1:94, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
apply:-1, 402983257 (org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor$$Lambda$608)
accept:195, ReferencePipeline$3$1 (java.util.stream)
forEachRemaining:133, Iterator (java.util)
forEachRemaining:1054, Collections$UnmodifiableCollection$1 (java.util)
forEachRemaining:1801, Spliterators$IteratorSpliterator (java.util)
copyInto:484, AbstractPipeline (java.util.stream)
wrapAndCopyInto:474, AbstractPipeline (java.util.stream)
evaluateSequential:913, ReduceOps$ReduceOp (java.util.stream)
evaluate:234, AbstractPipeline (java.util.stream)
collect:578, ReferencePipeline (java.util.stream)
mapMethodsToQuery:96, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
lambda$new$0:86, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
apply:-1, 1018315329 (org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor$$Lambda$607)
map:265, Optional (java.util)
<init>:86, QueryExecutorMethodInterceptor (org.springframework.data.repository.core.support)
getRepository:364, RepositoryFactorySupport (org.springframework.data.repository.core.support)
lambda$afterPropertiesSet$5:322, RepositoryFactoryBeanSupport (org.springframework.data.repository.core.support)
get:-1, 50630670 (org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport$$Lambda$487)
getNullable:230, Lazy (org.springframework.data.util)
get:114, Lazy (org.springframework.data.util)
afterPropertiesSet:328, RepositoryFactoryBeanSupport (org.springframework.data.repository.core.support)
afterPropertiesSet:144, JpaRepositoryFactoryBean (org.springframework.data.jpa.repository.support)
invokeInitMethods:1863, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
initializeBean:1800, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:620, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
lambda$doGetBean$0:335, AbstractBeanFactory (org.springframework.beans.factory.support)
getObject:-1, 1216889437 (org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$277)
getSingleton:234, DefaultSingletonBeanRegistry (org.springframework.beans.factory.support)
doGetBean:333, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:213, AbstractBeanFactory (org.springframework.beans.factory.support)
resolveBeanByName:479, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
autowireResource:550, CommonAnnotationBeanPostProcessor (org.springframework.context.annotation)
getResource:520, CommonAnnotationBeanPostProcessor (org.springframework.context.annotation)
getResourceToInject:673, CommonAnnotationBeanPostProcessor$ResourceElement (org.springframework.context.annotation)
inject:228, InjectionMetadata$InjectedElement (org.springframework.beans.factory.annotation)
inject:119, InjectionMetadata (org.springframework.beans.factory.annotation)
postProcessProperties:329, CommonAnnotationBeanPostProcessor (org.springframework.context.annotation)
populateBean:1431, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:619, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
lambda$doGetBean$0:335, AbstractBeanFactory (org.springframework.beans.factory.support)
getObject:-1, 1216889437 (org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$277)
getSingleton:234, DefaultSingletonBeanRegistry (org.springframework.beans.factory.support)
doGetBean:333, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:208, AbstractBeanFactory (org.springframework.beans.factory.support)
resolveCandidate:276, DependencyDescriptor (org.springframework.beans.factory.config)
doResolveDependency:1389, DefaultListableBeanFactory (org.springframework.beans.factory.support)
resolveDependency:1309, DefaultListableBeanFactory (org.springframework.beans.factory.support)
resolveFieldValue:656, AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement (org.springframework.beans.factory.annotation)
inject:639, AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement (org.springframework.beans.factory.annotation)
inject:119, InjectionMetadata (org.springframework.beans.factory.annotation)
postProcessProperties:399, AutowiredAnnotationBeanPostProcessor (org.springframework.beans.factory.annotation)
populateBean:1431, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:619, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
lambda$doGetBean$0:335, AbstractBeanFactory (org.springframework.beans.factory.support)
getObject:-1, 1216889437 (org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$277)
getSingleton:234, DefaultSingletonBeanRegistry (org.springframework.beans.factory.support)
doGetBean:333, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:208, AbstractBeanFactory (org.springframework.beans.factory.support)
resolveReference:330, BeanDefinitionValueResolver (org.springframework.beans.factory.support)
resolveValueIfNecessary:113, BeanDefinitionValueResolver (org.springframework.beans.factory.support)
resolveConstructorArguments:693, ConstructorResolver (org.springframework.beans.factory.support)
autowireConstructor:198, ConstructorResolver (org.springframework.beans.factory.support)
autowireConstructor:1372, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBeanInstance:1222, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:582, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
resolveInnerBean:374, BeanDefinitionValueResolver (org.springframework.beans.factory.support)
resolveValueIfNecessary:127, BeanDefinitionValueResolver (org.springframework.beans.factory.support)
applyPropertyValues:1707, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
populateBean:1452, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:619, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
lambda$doGetBean$0:335, AbstractBeanFactory (org.springframework.beans.factory.support)
getObject:-1, 1216889437 (org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$277)
getSingleton:234, DefaultSingletonBeanRegistry (org.springframework.beans.factory.support)
doGetBean:333, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:208, AbstractBeanFactory (org.springframework.beans.factory.support)
preInstantiateSingletons:934, DefaultListableBeanFactory (org.springframework.beans.factory.support)
finishBeanFactoryInitialization:918, AbstractApplicationContext (org.springframework.context.support)
refresh:583, AbstractApplicationContext (org.springframework.context.support)
configureAndRefreshWebApplicationContext:401, ContextLoader (org.springframework.web.context)
initWebApplicationContext:292, ContextLoader (org.springframework.web.context)
contextInitialized:103, ContextLoaderListener (org.springframework.web.context)
callContextInitialized:1073, ContextHandler (org.eclipse.jetty.server.handler)
callContextInitialized:572, ServletContextHandler (org.eclipse.jetty.servlet)
contextInitialized:1002, ContextHandler (org.eclipse.jetty.server.handler)
initialize:746, ServletHandler (org.eclipse.jetty.servlet)
startContext:379, ServletContextHandler (org.eclipse.jetty.servlet)
startWebapp:1449, WebAppContext (org.eclipse.jetty.webapp)
startContext:1414, WebAppContext (org.eclipse.jetty.webapp)
doStart:916, ContextHandler (org.eclipse.jetty.server.handler)
doStart:288, ServletContextHandler (org.eclipse.jetty.servlet)
doStart:524, WebAppContext (org.eclipse.jetty.webapp)
start:73, AbstractLifeCycle (org.eclipse.jetty.util.component)
start:169, ContainerLifeCycle (org.eclipse.jetty.util.component)
doStart:117, ContainerLifeCycle (org.eclipse.jetty.util.component)
doStart:97, AbstractHandler (org.eclipse.jetty.server.handler)
start:73, AbstractLifeCycle (org.eclipse.jetty.util.component)
start:169, ContainerLifeCycle (org.eclipse.jetty.util.component)
doStart:117, ContainerLifeCycle (org.eclipse.jetty.util.component)
doStart:97, AbstractHandler (org.eclipse.jetty.server.handler)
start:73, AbstractLifeCycle (org.eclipse.jetty.util.component)
start:169, ContainerLifeCycle (org.eclipse.jetty.util.component)
start:423, Server (org.eclipse.jetty.server)
doStart:110, ContainerLifeCycle (org.eclipse.jetty.util.component)
doStart:97, AbstractHandler (org.eclipse.jetty.server.handler)
doStart:387, Server (org.eclipse.jetty.server)
start:73, AbstractLifeCycle (org.eclipse.jetty.util.component)`
If you'd like us to spend some time investigating, please take the time to provide a complete minimal sample (something that we can unzip or git clone, build, and deploy) that reproduces the problem.
Give me a day. I am working on providing a minimal sample.
Demo using In-memory H2 database
https://github.com/ddramireddy/springdatajpaissuedemowithh2
Demo using Postgresql Database
https://github.com/ddramireddy/springdatajpaissuedemo
Please find repo above. On running the project, It will throw the exception. If we lower the "spring-data-jpa" library version to 2.5.5 or lower, It will be successful.
@ddramireddy I took your H2 repo, and did some tuning and pruning, and came up with a slimmed down variant:
https://github.com/gregturn/jpa-2608
This one seems to start up just fine using Spring Boo 2.7.2 and the corresponding version of Spring Data JPA, so I'm still not sure where the problem is.
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.
Facing same problem any fix