InvalidDataAccessApiUsageException:找不到类com.mongodb.BasicDBList的持久实体信息

时间:2017-07-04 09:46:53

标签: java json spring mongodb rest

我正在尝试将一个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"
}

并插入一个用户。为什么它不起作用?

2 个答案:

答案 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)