Spring Data JPA custom query with entity as a parameter doesn't work -


when use custom query entity parameter in spring data jpa exception:

java.sql.sqlexception: no value specified parameter 1

here related entities. have 2 entities @onetoone relationship, below:

car:

@entity @table(name = "car") public class car {  @id @generatedvalue(strategy = generationtype.identity) @column(name = "car_id") private long id;  @onetoone(cascade = cascadetype.all) @joincolumn(name = "order_id", unique = true, nullable = true, insertable = true, updatable = true) private order order; ... } 

order:

@entity @table(name = "order") public class order {  @id @generatedvalue(strategy = generationtype.identity) @column(name = "order_id") private long id;  @onetoone(mappedby="order") private car car; ... } 

i have spring data jpa repository created custom query find order car:

public interface orderrepository extends crudrepository<order, long> {  optional<order> findbycar(car car);  } 

however, when use method findbycar(carwithnonnullorder), error:

2016-01-28 12:13:39,494 [main ] warn sqlexceptionhelper - sql error: 0, sqlstate: 07001 2016-01-28 12:13:39,494 [main ] error sqlexceptionhelper - no value specified parameter 1 2016-01-28 12:13:39,503 [main ] info transactioncontext - rolled transaction test context [defaulttestcontext@61dde151 testclass = orderserviceit, testinstance = com.carsystem.server.orderserviceit@b25b095, testmethod = shouldmakeorder@orderserviceit, testexception = org.springframework.dao.invaliddataaccessresourceusageexception: not extract resultset; sql [n/a]; nested exception org.hibernate.exception.sqlgrammarexception: not extract resultset, mergedcontextconfiguration = [mergedcontextconfiguration@507b79f7 testclass = orderserviceit, locations = '{classpath:context/app-context.xml}', classes = '{}', contextinitializerclasses = '[]', activeprofiles = '{}', propertysourcelocations = '{}', propertysourceproperties = '{}', contextloader = 'org.springframework.test.context.support.delegatingsmartcontextloader', parent = [null]]]. 2016-01-28 12:13:39,504 [main ] info genericapplicationcontext - closing org.springframework.context.support.genericapplicationcontext@ff5b51f: startup date [thu jan 28 12:13:31 cet 2016]; root of context hierarchy 2016-01-28 12:13:39,506 [main ] info tainerentitymanagerfactorybean - closing jpa entitymanagerfactory persistence unit 'default'
org.springframework.dao.invaliddataaccessresourceusageexception: not extract resultset; sql [n/a]; nested exception org.hibernate.exception.sqlgrammarexception: not extract resultset @ org.springframework.orm.jpa.vendor.hibernatejpadialect.converthibernateaccessexception(hibernatejpadialect.java:242) @ org.springframework.orm.jpa.vendor.hibernatejpadialect.translateexceptionifpossible(hibernatejpadialect.java:225) @ org.springframework.orm.jpa.abstractentitymanagerfactorybean.translateexceptionifpossible(abstractentitymanagerfactorybean.java:417) @ org.springframework.dao.support.chainedpersistenceexceptiontranslator.translateexceptionifpossible(chainedpersistenceexceptiontranslator.java:59) @ org.springframework.dao.support.dataaccessutils.translateifnecessary(dataaccessutils.java:213) @ org.springframework.dao.support.persistenceexceptiontranslationinterceptor.invoke(persistenceexceptiontranslationinterceptor.java:147) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.data.jpa.repository.support.crudmethodmetadatapostprocessor$crudmethodmetadatapopulatingmethodinterceptor.invoke(crudmethodmetadatapostprocessor.java:131) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:92) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.aop.framework.jdkdynamicaopproxy.invoke(jdkdynamicaopproxy.java:208) @ com.sun.proxy.$proxy41.findbycar(unknown source) @ com.carsystem.server.ordermapper.map(ordermapper.java:25) @ com.carsystem.server.orderserviceimpl.listorders(orderserviceimpl.java:90) @ com.carsystem.server.orderserviceit.shouldmakeorder(orderserviceit.java:96) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26) @ org.springframework.test.context.junit4.statements.runbeforetestmethodcallbacks.evaluate(runbeforetestmethodcallbacks.java:75) @ org.springframework.test.context.junit4.statements.runaftertestmethodcallbacks.evaluate(runaftertestmethodcallbacks.java:86) @ org.springframework.test.context.junit4.statements.springrepeat.evaluate(springrepeat.java:84) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:254) @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:89) @ org.junit.runners.parentrunner$3.run(parentrunner.java:238) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236) @ org.junit.runners.parentrunner.access$000(parentrunner.java:53) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229) @ org.springframework.test.context.junit4.statements.runbeforetestclasscallbacks.evaluate(runbeforetestclasscallbacks.java:61) @ org.springframework.test.context.junit4.statements.runaftertestclasscallbacks.evaluate(runaftertestclasscallbacks.java:70) @ org.junit.runners.parentrunner.run(parentrunner.java:309) @ org.springframework.test.context.junit4.springjunit4classrunner.run(springjunit4classrunner.java:193) @ org.junit.runner.junitcore.run(junitcore.java:160) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:78) @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:212) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:68) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ com.intellij.rt.execution.application.appmain.main(appmain.java:140) caused by: org.hibernate.exception.sqlgrammarexception: not extract resultset @ org.hibernate.exception.internal.sqlstateconversiondelegate.convert(sqlstateconversiondelegate.java:106) @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:42) @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:109) @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:95) @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.extract(resultsetreturnimpl.java:79) @ org.hibernate.loader.loader.getresultset(loader.java:2116) @ org.hibernate.loader.loader.executequerystatement(loader.java:1899) @ org.hibernate.loader.loader.executequerystatement(loader.java:1875) @ org.hibernate.loader.loader.doquery(loader.java:919) @ org.hibernate.loader.loader.doqueryandinitializenonlazycollections(loader.java:336) @ org.hibernate.loader.loader.dolist(loader.java:2611) @ org.hibernate.loader.loader.dolist(loader.java:2594) @ org.hibernate.loader.loader.listignorequerycache(loader.java:2423) @ org.hibernate.loader.loader.list(loader.java:2418) @ org.hibernate.loader.hql.queryloader.list(queryloader.java:501) @ org.hibernate.hql.internal.ast.querytranslatorimpl.list(querytranslatorimpl.java:371) @ org.hibernate.engine.query.spi.hqlqueryplan.performlist(hqlqueryplan.java:216) @ org.hibernate.internal.sessionimpl.list(sessionimpl.java:1326) @ org.hibernate.internal.queryimpl.list(queryimpl.java:87) @ org.hibernate.jpa.internal.queryimpl.list(queryimpl.java:606) @ org.hibernate.jpa.internal.queryimpl.getresultlist(queryimpl.java:483) @ org.hibernate.jpa.criteria.compile.criteriaquerytypequeryadapter.getresultlist(criteriaquerytypequeryadapter.java:50) @ org.springframework.data.jpa.repository.query.jpaqueryexecution$collectionexecution.doexecute(jpaqueryexecution.java:114) @ org.springframework.data.jpa.repository.query.jpaqueryexecution.execute(jpaqueryexecution.java:78) @ org.springframework.data.jpa.repository.query.abstractjpaquery.doexecute(abstractjpaquery.java:100) @ org.springframework.data.jpa.repository.query.abstractjpaquery.execute(abstractjpaquery.java:91) @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.doinvoke(repositoryfactorysupport.java:462) @ org.springframework.data.repository.core.support.repositoryfactorysupport$queryexecutormethodinterceptor.invoke(repositoryfactorysupport.java:440) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.data.projection.defaultmethodinvokingmethodinterceptor.invoke(defaultmethodinvokingmethodinterceptor.java:61) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:99) @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:281) @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:96) @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) @ org.springframework.dao.support.persistenceexceptiontranslationinterceptor.invoke(persistenceexceptiontranslationinterceptor.java:136) ... 43 more caused by: java.sql.sqlexception: no value specified parameter 1 @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:957) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:896) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:885) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:860) @ com.mysql.jdbc.preparedstatement.checkallparametersset(preparedstatement.java:2205) @ com.mysql.jdbc.preparedstatement.fillsendpacket(preparedstatement.java:2185) @ com.mysql.jdbc.preparedstatement.fillsendpacket(preparedstatement.java:2115) @ com.mysql.jdbc.preparedstatement.executequery(preparedstatement.java:1936) @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.extract(resultsetreturnimpl.java:70) ... 74 more

it seems spring data jpa proxy can't find car entity. have found quite similar question here: spring data query not working when query parameter entity, in case i'm fetching entities eagerly. wrong mappings or spring data jpa?

edit

hibernate query: select order0_.order_id order_i1_3_, order0_.client_id client_i4_3_, order0_.createddate createdd2_3_, order0_.returndate returnda3_3_ order order0_ left outer join car car1_ on order0_.order_id=car1_.order_id car1_.car_id=?

i have noticed parameter car used in custom query class member of order entity. however, when call query, have circular dependency between car , order: order had null car.

try this:

order findonebycar(car car); 

Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -