Дизайн:Как обновить объект Ref'ed?
- Entity A, B и C
- С Ref'd в Б, В и А Ref'd
- Все три созданы индивидуально
- При извлечения A, B и C также получены
Проблема: При попытке сохранить обновленный A, я получаю ... эта ошибка:
IOException получил при обновлении липкие: 400 Bad Request { "кода": 400, "ошибки": [{ "домен": "глобальное", "сообщение": «com.google.appengine. repackaged.org.codehaus.jackson.map.JsonMappingException: вы не можете создать Ключ для объекта с нулевым значением @Id. Объект был [email protected]d5 (через цепочку ссылок: com.example.entity_A [\ "owner \"] -> com.example.entity_B [\ "myC \"]) ", " reason ":" badRequest " } ], " message ":" com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: вы не можете создать Ключ для объекта с нулевым значением @Id. Объект был [email protected] (через эталонной цепи: com.example.entity_A [\ "владелец \"] -> com.example.entity_B [\ "Мус \"])» }
Не можете ли вы объявить объект B «окончательным» и пройти во время строительства А? –
Если вы должны были установить ссылку на объект B на null перед сохранением объекта A, он не будет обновлять объект B. Вы могли бы автоматизировать это в методе '@ BeforeSave' в сущности (это не отличная идея, но она должна работать). Если вы хотите сохранить ссылку, вы можете заменить существующую/старую ссылку на новую с помощью 'Ref.create (Key.create (EntityB, id))', где вы могли бы взять идентификатор из старой ссылки. – konqi
Этот вопрос запутан. В заголовке вы спрашиваете о _embedded_ объектах, но в теле вы говорите, что это 'Ref', который не встроен. Refs - это просто ключи с методами get() - нет каскадного сохранения или обновления. Вы можете уточнить вопрос? – stickfigure