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

Conversion failed exception from String to bson ObjectId on Mongo calls

Open Kramani99 opened this issue 3 years ago • 2 comments

Hi, We are getting following error logged in Dynatrace on all Mongo calls even though app functions normally and we are also unable to see the exception when debugging through IDE: Exception: org.springframework.core.convert.ConversionFailedException Message: Failed to convert from type [java.lang.String] to type [org.bson.types.ObjectId] for value ''; nested exception is java.lang.IllegalArgumentException: invalid hexadecimal representation of an ObjectId: [] Stacktrace: org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:191) org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) org.springframework.data.mongodb.core.convert.MongoConverter.convertId(MongoConverter.java:146) org.springframework.data.mongodb.core.convert.QueryMapper.convertId(QueryMapper.java:636) org.springframework.data.mongodb.core.convert.QueryMapper.getMappedValue(QueryMapper.java:384) org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObjectForField(QueryMapper.java:243) org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:152) org.springframework.data.mongodb.core.convert.QueryMapper.getMappedKeyword(QueryMapper.java:285) org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:124) org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:2473) org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:820) org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:807) org.springframework.data.mongodb.core.MongoTemplate$$FastClassBySpringCGLIB$$5a5a6b8.invoke() org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) com.company.config.MongoTemplateWithMetrics$$EnhancerBySpringCGLIB$$.findOne com.company.dao.connect.AppointmentDAOConnect.findByParameterAppointment(AppointmentDAOConnect.java:689) com.company.dao.connect.AppointmentDAOConnect$$FastClassBySpringCGLIB$$40444430.invoke() org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) com.company.dao.connect.AppointmentDAOConnect$$EnhancerBySpringCGLIB$$.findByParameterAppointment

How can I go about debugging the issue?

Kramani99 avatar Apr 07 '22 22:04 Kramani99

Which version of data-mongodb are you using? There's a guard in the conversion to check validity of a given String representation via ObjectId.isValid. A complete minimal sample (something that we can unzip or git clone, build, and deploy) that reproduces the problem would help spot the issue.

christophstrobl avatar Apr 08 '22 06:04 christophstrobl

We are using spring boot mongo 2.2.0. Is this a known issue or should I go ahead and create a sample project?

Kramani99 avatar Apr 12 '22 13:04 Kramani99