2017-07-04 39 views
0

我想插入一个json对象数组到mongodb中。我通过一个POST请求阵列,使用SpringInvalidDataAccessApiUsageException:没有为该类找到持久性实体信息com.mongodb.BasicDBList

我的目标

@Document(collection = "Users") 
public class User { 
    private String name; 
    private String number; 
//constructors, getters, setters 
} 

我的春天控制器

@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); 
    } 
} 

这是我的JSON

[ 
    { 
     "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" 
} 

是没有问题的,如果我做

public void postUser(@RequestBody User users) 

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

回答

0

当您在参数之前添加@RequestBody时,HttpMessageConvertor会尝试将json字符串转换为指定的类型 - BasicDBList。 json字符串可能与BasicDBList不匹配,所以转换失败。你可以使用这个:

public void postUser(@RequestBody List<User> users) 
+0

没有帮助。新错误是'com.mongodb.BasicDBObject不能转换为com.mongodb.BasicDBList' – Evgenii

+0

纠正。我还必须将'mongoOperation.insert(用户)'改为'insertAll(users)'。现在它可以工作。 – Evgenii

相关问题