PanacheMongo persistOrUpdate() DBRef $ref 字段后面必须跟一个 $id 字段

问题描述

我收到此错误

com.mongodb.MongoWriteException: The DBRef $ref field must be followed by a $id field

当我想用华丽的方式更新我的 mongodb 中已经存在的模型时。

我的模型类:

@MongoEntity
public class MyModel extends PanacheMongoEntity {
...
}

如果有帮助,我正在使用自动生成的 ID 字段。

当我更新时,我想从数据库加载负载(这是一个相当大的 json 文件),因为前端没有发送它。

这是我能生成但不起作用的最小测试用例:

@Transactional
public void myMethod(String id,MyModelDTO dto) {
    MyModel old = MyModel.findById(new ObjectId(id));
    dto.setPayload(old.getPayload());
    MyModel.update(mapper.toEntity(dto));
}

如果我省略 findById 方法,我不会收到我在顶部提到的错误。 dto 也设置了 id,因此结果 MyModel 具有正确的 ObjectId,这是我的第一个猜测...

我该如何解决这个问题? 将相当大的数据块从数据库加载到 DTO 是一个很好的解决方案吗?或者有没有其他方法可以更新整个对象而不是一个变量?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)