Morphia: Обновите ранее существующий объект Entity с помощью значений постоянства из базы данных MongoDB - PullRequest
0 голосов
/ 11 октября 2019

Созданная здесь проблема 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.

...