Skip to content

Getting exception in MappingMongoConverter while trying to map array of string into string #4371

Closed
@packageman

Description

@packageman

When I upgrade spring-data-mongodb from 3.1.8 to 3.3.5, I encountered below exception:

org.springframework.data.mapping.MappingException: Cannot convert [a, b, c] of type class java.util.ArrayList into an instance of class java.lang.String! Implement a custom Converter<class java.util.ArrayList, class java.lang.String> and register it with the CustomConversions. Parent object was: MemberGroup(id=6271f70e87d74d524481a418, accountId=5b036b566e2bdaa2074b0101, proposedGroupId=null, name=byron-test-9, description=Byron Test 18, type=portal, conditionGroups=[MemberGroup.MemberGroupConditionGroup(name=null, conjunction=OR, conditions=[MemberGroup.MemberGroupCondition(type=EVENT, filters=[Filter(type=STRING, field=properties.channelId, operator=IN, value=[5ad411ab6f82dc001f2420f0], caseSensitive=null, aggregation=null, expression=null, isEditable=null, editableFields=null, extra=null, fieldForSql=null), Filter(type=STRING, field=name, operator=EQUALS, value=maievent-subscribe, caseSensitive=false, aggregation=null, expression=null, isEditable=null, editableFields=null, extra=null, fieldForSql=null)])], isEditable=null, editableFields=null)], memberCount=7, computingAt=null, computedAt=2022-05-27T20:44:04.858, editedAt=null, isEnabled=true, dontCompute=false, inDeveloperMode=false, isDeleted=false, dataSource=null, distributorId=null, distributorIds=null, createdBy=null, events=null) -> null
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter$ConversionContext.convert(MappingMongoConverter.java:2044)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1779)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readProperties(MappingMongoConverter.java:512)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.populateProperties(MappingMongoConverter.java:425)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:394)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readDocument(MappingMongoConverter.java:356)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:292)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:288)
	at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:107)
	at org.springframework.data.mongodb.core.MongoTemplate$ReadDocumentCallback.doWith(MongoTemplate.java:3207)
	at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:2822)
	at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:2529)
	at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:811)
	at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:798)
	at com.xxx.bigdata.repository.BaseRepository.getOneById(BaseRepository.java:102)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)

Checked MappingMongoConverter.java commit history, I found out that this commit caused the above exception. It seems that this commit is just doing refactoring, not to change the program execution behavior.

So is the above exception an intentional change or a bug caused by refactoring?

Metadata

Metadata

Labels

type: regressionA regression from a previous release

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions