Я хотел бы сохранить свойство Map в своем компоненте и хочу, чтобы оно хранилось в MongoDB с использованием Spring Data Mongodb.
public class Sample {
Map values;
//constructor, getters and setters go here
}
Сохранение происходит нормально. Предположим, что я сохранил такой документ Mongo, используя этот bean-компонент:
{
"values": {
"id":123,
"name":"Vivek"
}
}
Теперь я хотел бы запросить обратно этот документ. Итак, я пишу что-то вроде этого:
Query.addCriteria(Criteria.where("values.id").is(123));
Это приводит к исключению при выполнении find()
.
java.lang.IllegalArgumentException: [Assertion failed] - this argument is required; it must not be null
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.util.Assert.notNull(Assert.java:123)
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:69)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:290)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:274)
at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.getPath(QueryMapper.java:559)
at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:486)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:104)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1489)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1480)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:527)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:518)
Как мы можем выйти из этого исключения?