#java #google-cloud-datastore #objectify
#java #google-облако-хранилище данных #objectify
Вопрос:
Есть ли способ создать ссылку на дочерний объект в методе, но сохранить дочерний объект в другом методе?
Прямо сейчас я сначала создаю ссылку, а затем сохраняю дочерний объект тем же методом. Только после того, как это сделано, родительский объект сохраняется. Если при сохранении родительского объекта возникает исключение DatastoreTimeoutException, ConcurrentModificationException или DatastoreFailureException, я остаюсь с сохранением дочернего объекта в хранилище данных, которое бесполезно.
@Entity
@Index
public class parentEntity
{
@Id
private String uniqueIdentifier;
private String name = new String();
@Load
private LinkedList <Ref <childEntity>> refToChild = new LinkedList <Ref <childEntity>>();
}
@Entity
@Index
public class childEntity
{
@Id
private String uniqueIdentifier;
private String address = new String();
@Load
@Parent
public Ref <parentEntity> refToParent;
}
This method first creates the reference parent has with child and then persists the entity(child)
public static void createRefAndSaveChildEntity()
{
Ref.create( key ) ;//creates the reference with child
ofy().save().entity( childEntity ).now();
}
Я хочу сохранить дочерний объект только после сохранения родительского объекта (со ссылкой на дочерний объект).
Комментарии:
1. зачем вам ссылаться на объект, который еще не существует? что, если есть проблема с сохранением дочернего объекта?
2. Учитывая, что вы используете отношения родитель-потомок, вы должны иметь возможность использовать запрос предка для извлечения дочерних объектов вместо сохранения явной ссылки на дочерние объекты в родительском объекте.
3. @Stultuske да, если подумать, при сохранении дочернего объекта может возникнуть проблема.
4. @JimMorrison, да, для запроса я мог бы, но как это сделать при сохранении?
5. Я говорил о том, что вам не нужно сохранять явную ссылку, потому что у вас есть неявная ссылка через запросы предка.