Morphia:使用MongoDB数据库中的持久性值更新一个预先存在的Entity对象

时间:2019-10-11 03:36:45

标签: java mongodb morphia

在此处创建的GitHub问题:https://github.com/MorphiaOrg/morphia/issues/1388

据我所知,Datastore#merge(object)方法会将$传递的对象中的所有持久字段设置为具有匹配objectID的对象的数据库。

对于我正在处理的项目,我需要合并数据库中传递的对象中的所有字段。这样我的对象中的瞬变字段将保持不变,并且我的对象将是同一实例-但这些字段将更新为数据库中的值

,或者即使有一种使用预先存在的对象创建查询的方法,也可以将数据库中的字段写入到其中。

类似datastore.createQuery(MyClass.class, myObject)

想知道是否有人知道采用当前Morphia实现的方法。 基本上,不是希望Morphia的对象工厂为查询创建类的新实例,而是希望它使用预先存在的对象并覆盖字段值。

我想知道这样的事情是否可行:

public void updateFromNewer(X entity, X update) {
        datastore.getMapper().getMappedClass(entity).getPersistenceFields().forEach(mf -> {
            mf.setFieldValue(entity, mf.getFieldValue(update));
        });
    }

但是看起来很混乱

我基本上需要使用此功能的相反功能:

datastore.merge(entity);

上述方法$set将提供的实体的持久字段插入数据库。

没有错误或任何东西,只是不确定如何实现。

使用最新的Morphia和MongoDB。

0 个答案:

没有答案