spring-data-jpa icon indicating copy to clipboard operation
spring-data-jpa copied to clipboard

Transaction Rollback error on not finding countQuery from 2.6.4 onwards

Open ddramireddy opened this issue 3 years ago • 5 comments

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)`

ddramireddy avatar Jul 29 '22 23:07 ddramireddy

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.

christophstrobl avatar Aug 01 '22 14:08 christophstrobl

Give me a day. I am working on providing a minimal sample.

ddramireddy avatar Aug 04 '22 21:08 ddramireddy

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 avatar Aug 04 '22 22:08 ddramireddy

@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.

gregturn avatar Sep 20 '22 18:09 gregturn

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.

spring-projects-issues avatar Oct 06 '22 15:10 spring-projects-issues

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.

spring-projects-issues avatar Oct 13 '22 15:10 spring-projects-issues

Facing same problem any fix

mnav01 avatar Jun 16 '23 06:06 mnav01