我正在尝试将一个json对象数组插入mongodb。我使用tusinde
POST
请求传递数组
我的对象
Spring
我的弹簧控制器
@Document(collection = "Users")
public class User {
private String name;
private String number;
//constructors, getters, setters
}
这是我的json
@RestController
public class UserController {
@RequestMapping(value="/postUser", method = RequestMethod.POST)
public void postUser(@RequestBody BasicDBList users){
ApplicationContext ctx =
new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation =
(MongoOperations) ctx.getBean("mongoTemplate");
mongoOperation.insert(users);
}
}
我得到的回报是
[
{
"name" : "a",
"number" : "1"
},
{
"name" : "c",
"number" : "3"
}
]
如果我这样做没有问题
{
"timestamp": 1499161260902,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.InvalidDataAccessApiUsageException",
"message": "No Persistent Entity information found for the class com.mongodb.BasicDBList",
"path": "/postUser"
}
并插入一个用户。为什么它不起作用?
答案 0 :(得分:0)
在参数前添加@RequestBody
时,HttpMessageConvertor
会尝试将json字符串转换为指定的类型 - BasicDBList
。 json字符串可能与BasicDBList
不匹配,因此转换失败。你可以用这个:
public void postUser(@RequestBody List<User> users)
答案 1 :(得分:0)
实际上,Spring数据无法确定要保存BasicDBList的集合名称。
这与HttpMessageConverter无关
您可以在这里查看更多信息:
Insert DBObject into MongoDB using Spring Data
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: No Persitent Entity information found for the class com.mongodb.BasicDBObject at org.springframework.data.mongodb.core.MongoTemplate.determineCollectionName(MongoTemplate.java:1747)