Skip to content

NamingStrategy causes failure when saving entities [DATAJDBC-144] #377

@spring-projects-issues

Description

@spring-projects-issues

Jens Schauder opened DATAJDBC-144 and commented

When saving an entity for which the NamingStrategy creates columnNames different from the property names the following exception occurs:

Exception in thread "main" java.lang.IllegalStateException: Failed to execute CommandLineRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:773)
	at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:760)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:328)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233)
	at example.springdata.jdbc.basics.AggregatesApplication.main(AggregatesApplication.java:76)
Caused by: org.springframework.data.jdbc.core.FunctionCollector$CombinedDataAccessException: Failed to perform data access with all available strategies
	No value supplied for the SQL parameter 'intMaximumAge': No value registered for key 'intMaximumAge'; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'intMaximumAge': No value registered for key 'intMaximumAge'
	at org.springframework.data.jdbc.core.FunctionCollector.lambda$finisher$3(FunctionCollector.java:84)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:503)
	at org.springframework.data.jdbc.core.CascadingDataAccessStrategy.collect(CascadingDataAccessStrategy.java:102)
	at org.springframework.data.jdbc.core.CascadingDataAccessStrategy.collectVoid(CascadingDataAccessStrategy.java:107)
	at org.springframework.data.jdbc.core.CascadingDataAccessStrategy.insert(CascadingDataAccessStrategy.java:43)
	at org.springframework.data.jdbc.core.DefaultJdbcInterpreter.interpret(DefaultJdbcInterpreter.java:49)
	at org.springframework.data.jdbc.core.conversion.DbAction$Insert.executeWith(DbAction.java:101)
	at org.springframework.data.jdbc.core.conversion.AggregateChange.lambda$executeWith$0(AggregateChange.java:44)
	at java.util.ArrayList.forEach(ArrayList.java:1249)
	at org.springframework.data.jdbc.core.conversion.AggregateChange.executeWith(AggregateChange.java:44)
	at org.springframework.data.jdbc.core.JdbcEntityTemplate.save(JdbcEntityTemplate.java:77)
	at org.springframework.data.jdbc.repository.SimpleJdbcRepository.save(SimpleJdbcRepository.java:54)
	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.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:377)
	at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:200)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:610)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:573)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:554)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
	at com.sun.proxy.$Proxy20.save(Unknown Source)
	at example.springdata.jdbc.basics.AggregatesApplication.run(AggregatesApplication.java:71)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:789)
	... 6 more
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'intMaximumAge': No value registered for key 'intMaximumAge'
	at org.springframework.jdbc.core.namedparam.NamedParameterUtils.buildValueArray(NamedParameterUtils.java:343)
	at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:326)
	at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:316)
	at org.springframework.data.jdbc.core.DefaultDataAccessStrategy.insert(DefaultDataAccessStrategy.java:103)
	at org.springframework.data.jdbc.core.CascadingDataAccessStrategy.lambda$insert$0(CascadingDataAccessStrategy.java:43)
	at org.springframework.data.jdbc.core.CascadingDataAccessStrategy.lambda$collectVoid$12(CascadingDataAccessStrategy.java:108)
	at org.springframework.data.jdbc.core.FunctionCollector.lambda$accumulator$1(FunctionCollector.java:59)
	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
	... 42 more

Referenced from: pull request #19

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions