Передаю при сохранении объект с вложенными сущностями. Класс ентити:
@JmixEntity(name = "plan_DailyShiftFact")
@Store(name = "mesapp")
public class DailyShiftFact {
@JmixGeneratedValue
@JmixId
private UUID id;
@NotNull
private EntityFieldEnumValues status;
@Composition(inverse = "fact")
@OrderBy("startDate, createdDate")
private List<DailyShiftOperationFact> operations = new ArrayList<>();
...
}
@JmixEntity(name = "mes_EntityFieldEnumValues")
@Store(name = "mesapp")
public class EntityFieldEnumValues {
@JmixGeneratedValue
@JmixId
private UUID id;
@NotNull
private String entityName;
@NotNull
private String entityField;
@InstanceName
@NotNull
private String title;
@NotNull
private String code;
...
}
При сохранении вызывается сервис Jmix EntityImportExportImpl, в нем объект парсится корректно и даже конечный объект формируется корректно, но в конце вызывается валидация saveContext, где объект уже лежит в “урезанном” виде: во вложенном объекте (поле status) осталось только поле, отвечающее за InstanceName (title). В связи с чем возникает ошибка валидации, поскольку валидация обращается к полю статуса “code”:
Исходный объект содержит все поля статуса, включая code:
Валидируемый объект (внутри saveContext) содержит не все поля:
Ошибка:
Caused by: java.lang.IllegalStateException: Cannot get unfetched attribute [code] from detached object ru.dgtserv.mes.common.entity.EntityFieldEnumValues-ddd4f648-1863-9c14-f93b-f70ec187ecb6 [detached].