0

I am trying to query mongodb using it's regex functionality. I am using Spring boot with mongo repository. The implemented code is as below -

Criteria criteria = Criteria.where(field).regex(Pattern.compile(value, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE));
Query query = new Query();
query.addCriteria(criteria);
mongoTemplate.find(query, DummyClass.class, collectionName);

But this fails with an exception -

org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.util.regex.Pattern!
at org.springframework.data.mapping.context.MappingContext.getRequiredPersistentEntity(MappingContext.java:76)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:435)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.write(MappingMongoConverter.java:391)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.convertToMongoType(MappingMongoConverter.java:1194)
at org.springframework.data.mongodb.core.convert.QueryMapper.delegateConvertToMongoType(QueryMapper.java:441)
at org.springframework.data.mongodb.core.convert.QueryMapper.convertId(QueryMapper.java:560)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedValue(QueryMapper.java:349)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObjectForField(QueryMapper.java:231)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:140)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2235)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2225)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:770)

I want to understand the reason behind this problem, and if possible, a solution so as to solve this.

1 Answer 1

1

This is fixed. While providing configuration to MongoDB, I wanted to provide it custom conversion list where in I wanted to use custom converters for specific classes. I was providing it CustomConversions. Keeping the return type as CustomConversions, I actually returned the subclass MongoCustomConversios, like below -

@Bean
@Override
public CustomConversions customConversions() {
    List<Converter<?, ?>> converterList = new ArrayList<>();
    converterList.add(new Converter1());
    converterList.add(new Converter2());
    converterList.add(new Converter3());

    return new MongoCustomConversions(converterList);
}

This resolved the issue that I was having.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.