Добрый день !
Версия jmix: 2.5.1
Что имеем:
Экран редактирования edit сущности, которая имеет вложенные сущности.
Т.е. Entity1 имеет в себе поле с Entity2, Entity2 в свою очередь имеет поле с Entity3.
Форма редактирования подымается под Entity1, все атрибуты на экран выводятся используя точку.
Проблемый сценарий:
Если поле в entity1.entity2.someField изначально имело значение, и мы его обнуляем, то при завершении операции на UI останется старое значение, хотя в БД значение уже обнулилось.
Если мы заново прогрузим эту сущность, например найдем ее через поиск - значение подтянется верное - null.
Тоже поведение для поля entity1.entity2.entity3.someField
Если значение изначально было null либо было каким то существенным (не null) и мы обновляем его на существенное значение - то новое значение поля сразу отобразится на UI.
фетч план выглядит так
<collection id="entity1Dc"
class="...Entity1">
<fetchPlan extends="_base">
<property name="entity2" fetchPlan="_base">
<property name="entity3" fetchPlan="_base"/>
</property>
</fetchPlan>
то есть связанные сущности явно добавлены в фетч план.
Судя по логам все запросы в БД проходят симметрично, движок в обоих случаях вычитывает данные из БД, но в проблемном не отображает.
Еще пару сценариев для уточнения:
- если параметр меняется на основной сущности entity1.someField, то проблемы с null значением не возникает - оно сразу отображается на UI(отсутствие значение).
- если на связанной сущности entity1.entity2.someField1 меняем на null, а другое поле entity1.entity2.someField2 меняем на существенное значение в одной операции, то на UI someField2 обновится сразу, а someField1 - останется старый.