morphia将数据存入mongodb数据库,报错:···morphia.mapping. ···No usable constructor for com.XX.XX.XX

来源:互联网 发布:工商银行软件研发中心 编辑:程序博客网 时间:2024/05/09 00:10

morphia操作mongodb报错:

org.mongodb.morphia.mapping.MappingException: No usable constructor for com.XX.XX.model.User

原因:

是因为User这个类没有可用的构造器,也就是说,找不到对应的构造函数。

User实体类的代码如下:

public static String addUser(Long userId, TraceReq traceReq) throws Exception {    try {
        //根据UserId找到该条记录,如果没有,则新增一条        Query<User> query = ds.createQuery(User.class)                .field("userId").equal(userId);        UpdateOperations<User> ops = ds.createUpdateOperations(User.class)                .set("Id", new ObjectId())                ..........................(省略)                ;        User user = ds.findAndModify(query, ops, false, true);        return ObjectMapper.getMapper().valueToTree(user));    } catch (Exception e) {        throw e;    }}
通过增加断点,知道,在User user =ds.findAndModify(query, ops,false,true);这一句抛出了异常,从try catch中捕获异常:








原因是:User这个类找不到合适的构造器,也就是说User这个类没有无参构造器。

肯定是User这个类写了其他的构造器,这样的话就得将无参构造器写出来,不然肯定不行。

以前我一直以为,这种情况下,如果不写入无参构造器编译器肯定会报错原来编译器是不会报错的,需要自己注意,需要自己注意,需要自己注意,重要的事情说三遍。

User实体类代码如下:


要将无参构造函数,写出来:






1 0