Как сначала сохранить родительский объект со ссылкой на дочерний объект, где дочерний объект еще не сохранен (Objectify)?

#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. Я говорил о том, что вам не нужно сохранять явную ссылку, потому что у вас есть неявная ссылка через запросы предка.