java - 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 甚至是一个好的解决方案吗?或者有没有其他方法可以更新整个对象,但只有一个变量?
解决方案
推荐阅读
- python - Tensorflow 2.0 中的 tf.function 和 tf.while 循环
- python - tensorflow 如何在人脸识别上进行训练、验证和测试?
- python - 如何在没有目标值的数据集上使用决策树进行预测?
- python - 使用 PIL 库从 YCbCr 到 RGB 的色彩空间转换?
- ios - 使用 Swift 5.1 for iOS 中的 SwiftUI 使用 RadialGradient 填充动态大小的 Rectangle
- ruby-on-rails - Rails 5 yield 给出重复的内容
- python - 将python文件导入另一个python文件
- python - 使用 Python 和 Selenium 抓取 Instagram 上喜欢帖子的帐户的名称,但仅返回 11 个名称
- r - expss 包可以处理带有加权数据的多个答案问题吗?
- php - PHP 在 Heroku 上连接到 Postgres 时遇到问题