Не удалось внести запись в таблицу черновиков дочерней записи в шапке
У меня есть сценарий, в котором мне нужно сделать запись в черновой таблице дочернего объекта (таблица основных причин)
«Основные причины» являются дочерними элементами таблицы «Шаг», которая, в свою очередь, является дочерним элементом таблицы «MainRoot». Т.е. «MainRoot» состоит из таблицы «Шаг», а таблица «Шаг» состоит из таблицы «Основные причины».
Я использую DraftService, чтобы сделать запись, как показано ниже.
@Qualifier("MainRootService") // mainRootService contains projections of 'MainRoot','Step','RootCauses' entites
DraftService draftService;
public String insertRootCauseDraft()
{
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("processUUID","f8ef8a32-09af-4602-a02e-3c32ca913d5d");
requestBody.put("rootCauseUUID","f6245256-6d52-4ac2-b009-82c526e818en");
draftService.run(Insert.into(cds.gen.mainrootservice.RootCauses_.class).entry(requestBody));
draftService.newDraft(Insert.into(cds.gen.mainrootservice.RootCauses_.class).entry(requestBody));
}
Приведенный выше код выдает ошибку, говоря, что родительский объект MainRootService.RootCauses не найден.
Я попробовал patchDraft, как показано ниже.
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("processUUID","f8ef8a32-09af-4602-a02e-3c32ca913d5d");
requestBody.put("rootCauseUUID","f6245256-6d52-4ac2-b009-82c526e818ek");
draftService.run(Insert.into(cds.gen.mainrootservice.RootCauses_.class).entry(requestBody));
draftService.patchDraft(Update.entity(cds.gen.mainrootservice.RootCauses_.class).where(p->p.processUUID().eq("f8ef8a32-09af-4602-a02e-3c32ca913d5d")));
но это дает индекс исключения вне связанного индекса исключения 0 размер 0
requestBody.put("processUUID","f8ef8a32-09af-4602-a02e-3c32ca913d5d");
requestBody.put("rootCauseUUID","f6245256-6d52-4ac2-b009-82c526e818ek");
draftService.run(Insert.into(cds.gen.mainrootservice.RootCauses_.class).entry(requestBody));
Result result = draftService.editDraft(Select.from(cds.gen.mainrootservice.RootCauses_.class).where(p->p.processUUID().eq("f8ef8a32-09af-4602-a02e-3c32ca913d5d")),true);
Это дает: Объект «MainRootService.RootCauses» не является корневым объектом дерева композиции с поддержкой черновика.
Помимо использования DraftService, я также пытался использовать PersistenceService, но это запись записей в активную таблицу, а не в черновую таблицу.
Пожалуйста помоги!