首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取java.lang.IllegalArgumentException“名称不能为空!”更新MongoDB集合时

获取java.lang.IllegalArgumentException“名称不能为空!”更新MongoDB集合时
EN

Stack Overflow用户
提问于 2020-05-11 20:26:11
回答 1查看 419关注 0票数 0

当我要在mongoDB中更新现有的集合条目时,我会遇到以下问题。我使用的是Spring boot 2.0。

我现有的MongoDB集合条目如下所示。我将更新下面集合的"external_item“。它在json posion中有一个空键。

代码语言:javascript
复制
{
    "TestItem" : {
        "item1" : "value1"
    },
    "external_item" : {
        "" : "keyIsEmptyOfThisValue",
        "key2" : false
    },
    "links" : [],
    "createdDate" : ISODate("2020-05-10T05:24:44.014Z"),
    "updatedDate" : ISODate("2020-05-10T05:24:44.014Z")
}

为此,我使用下面的有效负载和带有REST API的PUT方法。

代码语言:javascript
复制
{
"external_item" : {
        "" : "keyIsEmptyOfThisValue",
        "key2" : true
    }
}

更新时出现以下问题。它说明名称不能为空!如何通过这种方式更新MongoDB内容?

代码语言:javascript
复制
java.lang.IllegalArgumentException: Name must not be null!
    at org.springframework.util.Assert.hasText(Assert.java:162)
    at org.springframework.data.mongodb.core.convert.QueryMapper$Field.<init>(QueryMapper.java:591)
    at org.springframework.data.mongodb.core.convert.QueryMapper.createPropertyField(QueryMapper.java:216)
    at org.springframework.data.mongodb.core.convert.UpdateMapper.createPropertyField(UpdateMapper.java:169)
    at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:122)
    at org.springframework.data.mongodb.core.convert.QueryMapper.convertSimpleOrDBObject(QueryMapper.java:359)
    at org.springframework.data.mongodb.core.convert.UpdateMapper.getMappedObjectForField(UpdateMapper.java:81)
    at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:123)
    at org.springframework.data.mongodb.core.MongoTemplate$11.doInCollection(MongoTemplate.java:1016)
    at org.springframework.data.mongodb.core.MongoTemplate$11.doInCollection(MongoTemplate.java:1007)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:410)
    at org.springframework.data.mongodb.core.MongoTemplate.doUpdate(MongoTemplate.java:1007)
    at org.springframework.data.mongodb.core.MongoTemplate.updateFirst(MongoTemplate.java:985)
    at com.pearson.socket.core.dao.MongoDriverImpl.updateFirst(MongoDriverImpl.java:127)
    at com.pearson.socket.core.dao.AbstractDAOImpl.updateFirst(AbstractDAOImpl.java:92)```
EN

回答 1

Stack Overflow用户

发布于 2020-12-30 21:40:45

似乎在旧版本的spring-data-mongodb中有一个bug导致了这个问题。

考虑更新到较新的spring-bootspring-data-mongodb版本,例如,我知道在使用spring-data-mongodb 2.2.6spring-boot 2.2中,更新具有空映射键的实体是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61729663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档