сохранить ссылку на morphia, если я знаю, что это только _id?

Я копирую и храню некоторые данные из базы данных sql. Я сохраняю данные для объекта A на одном проходе, а объект B — на другом проходе. В объекте B сохранен _id объекта A. Я хотел бы сохранить A со ссылкой на B, чтобы при загрузке A я одновременно получал всю информацию из B.

Однако объект A не будет находиться в моей памяти в то время, когда я создаю объект B, не без серьезного рефакторинга. Поскольку ссылочный объект немного больше, чем _id, в любом случае, есть ли способ сказать morphia, что они должны использовать _id A для ссылки на A без предварительной загрузки всего A в память, чтобы сохранить объект в B? Будет ли создание в противном случае «пустого» объекта только с _id A и любым другим значением, установленным по умолчанию, и сохранение его эффективно делать то, что я хочу?


person dsollen    schedule 07.11.2014    source источник


Ответы (1)


Если вы работаете на уровне morphia, вам понадобится ссылка на объект A. Тем не менее, это не обязательно должен быть полный A. Например:

B b = new B();
// some work here
b.setA(new A(idForA)));
datastore.save(b);

Все, что нужно morphia, — это коллекция (которую она получает из информации о сопоставлении для A) и значение _id для этого A. Здесь произойдет следующее: когда b будет сохранен, он создаст ключ (для простоты) для этого A, а затем создайте DBRef в базе данных, используя это значение. Morphia не волнует никакое другое состояние члена @Reference. Так что, пока он может вытащить этот идентификатор для сохранения, все должно быть готово.

person evanchooly    schedule 07.11.2014