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实体类代码如下:
要将无参构造函数,写出来: