首页 > 解决方案 > spring mongo存储库无法转换带有字段数组类型的对象

问题描述

我有一个 mongo 集合

{
 "_id": "someId",
 "data": [
         {
             "field1": "value1",
             "field2": "value2",
             "field3": "value3"
         },
         {
             "field1": "value1",
             "field2": "value2",
             "field3": "value3"
         },
     ]
}

和带有存储库的 Spring Boot 2 应用程序

@Repository
public interface MyRepository extends MongoRepository<MyEntity, String> {
     MyEntity findByName(String myEntityName);
}

和实体

@Data
@NoArgsConstructor
public class MyEntity {
 @Id
 private String name;
 private HashMap data;

 public MyEntity (String name, JsonNode data) {
     this.name = name;
     this.data = CommonUtils.convertToHashMap(data);
 }

 public void setData(JsonNode data) {
     this.data = CommonUtils.convertToHashMap(data);
 }

}

当我调用 myRepository.findByName(name); 我犯了错误:

Failed to convert from type [java.util.ArrayList<?>] to type [java.util.HashMap<?, ?>] 

如何解决这个问题?在其他文档中,我有身份字段,但没有数组,字段类型是对象,没关系。我知道从 arrayList 到 hashMap 看起来很奇怪,但我不知道如何编辑实体或存储库或 mongo 文档。请帮忙。

PS对不起英语不好

标签: javaspringmongodbcastingspring-data

解决方案


推荐阅读