Сохранить ссылку на морфию, если я знаю, что это только _id?
Я копирую и храню некоторые данные из базы данных SQL. Я храню данные для объекта A за один проход, а объект B храню за другой проход. В объекте B сохранен _id _. Я хотел бы сохранить A со ссылкой на B, чтобы при загрузке AI получать всю информацию в B одновременно.
Тем не менее, объект A не будет в моей памяти, когда я создаю объект B, не без огромного рефакторинга. Поскольку эталонный объект немного больше, чем _id, в любом случае, есть ли способ, которым я могу сказать morphia, что они должны использовать _id A для ссылки на A без предварительной загрузки всей A в память, чтобы сохранить объект в B? Будет ли создание в противном случае "пустого" объекта с ничем, кроме _id A и любым другим значением, установленным по умолчанию, и сохранение его эффективно, что я хочу?
1 ответ
Если вы работаете на уровне morphia, вам понадобится ссылка на объект в руке. Тем не менее, он не должен быть полным А. Например:
B b = new B();
// some work here
b.setA(new A(idForA)));
datastore.save(b);
Все, что нужно морфии, - это коллекция (которую он получает из информации о сопоставлении для A) и значение _id для этого A. Что произойдет, когда b
сохранен, он создаст ключ (для простоты) для этого A
а затем создать DBRef
в базе данных, используя это значение. Морфия не заботится ни о каком другом государстве в @Reference
член. Так что, пока он может извлечь этот идентификатор для сохранения, у вас все будет готово.