Редактирование записей cubaVersion 6.10.13

Здравствуйте, имеется проблема при редактировании записей в обычном справочнике, данные при изменении не сохраняются в БД. Но при создании все работает. Странно ещё, что нет никаких ошибок в логах. В чем может быть причина? Была миграция с версии 6.5.3 до 6.10.13

Добрый день,
По вашему описанию сложно что-либо определенно сказать.
Наверное, в вашем проекте не совсем корректно используется API платформы.

Если коротко описывать сохранение изменений экранов, то цепочка следующая:

  • Некие сущности загружены или вручную добавлены в datasources

  • Из кода или посредством связанных с datasource компонентов вы меняете персистентные поля этих сущностей

  • При изменении свойств срабатывает слушатель, вот этот вот:
    AbstractDatasource.ItemListener#propertyChanged
    можно там поставить точку останова

  • Этот слушатель вызывает AbstractDatasource#modified
    Там во-первых запоминается, какие сущности менялись, и во-вторых - datasource помечается как измененный (modified)

  • При нажатии кнопки Save / Save & Close все datasources экрана проверяются, не помечены ли они как modified. Если хотя бы один такой есть, то все изменения собираются и отправляются на сохранение через DataService#commit().
    Логику коммита экрана и состояние datasources в этот момент можно проследить в этом методе:
    com.haulmont.cuba.gui.data.impl.DsContextImpl#commit

Данный слушатель не срабатывает: com.haulmont.cuba.gui.data.impl.AbstractDatasource

protected class ItemListener implements Instance.PropertyChangeListener {
@SuppressWarnings(“unchecked”)
@Override
public void propertyChanged(Instance.PropertyChangeEvent e) {
if (!listenersEnabled) {

Срабатывает данный метод -> com.haulmont.cuba.gui.data.impl.DsContextImpl#commit
но там нет пометки, что datasources is modified.

Визуально на UI изменения происходят, но при refresh старницы пропадают.

Тогда вам нужно или создать небольшой демо проект, где вопроизводится точно такая же проблема. Или подробно описать с примерами кода, как редактируются данные. Иначе не получится ничего посоветовать.

  1. Имеется Entity ->

DicNormaWorkServiceBean.java (3.1 КБ)

  1. Имеется экран редкатирования к нему ->dic-norma-work-edit.xml (2.9 КБ)

  2. Также экран просмотра -> dic-norma-work-browse.xml (2.7 КБ)

Экран, как видно, очень простой, ломаться особенно нечему.

Вы можете создать маленький демо-проект, где есть только минимально необходимый набор сущностей и экранов и где воспроизводится проблема?

test.rar (262.0 КБ) Создал тестовый проект проблема воспроизводится.

Редактируются.
Работает как часы.

У меня тоже редакируется, проблема втом, что в Базу не сохраняется, в чем может быть проблема?

Сохраняется.
Редактирую, закрываю экран, открываю и вижу новые значения

Какую среду разработки вы используете? у меня IntelliJ IDEA 2019.1.3 (Ultimate Edition)
Build #IU-191.7479.19, built on May 28, 2019
JRE: 1.8.0_202-release-1483-b58 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

Я бы не писал, если у меня работало. Значит есть какието различия)

Как вы проверяете, что в Базу не сохраняется? Edit - поменяли значения - ОК в редакторе - нажали Search в фильтре, и все изменения сбросились?

У меня демо-проект тоже сохраняет изменения нормально.

Я боюсь, что не получится помочь, если нет демо-проекта, где проблема воспроизводится (не только на вашей машине).

Могу только предположить, что таблица в Postgres определена как-то не так, может там ID не serial или отсутствует первичный ключ.

*Сорри тот тестовый проект у меня тоже сохраняет нормально, заново его переоткрыл.

*Да верно, только поиск не нажимаю, просто обновляю старницу и смотрю в БД значения старые.

В основном проекте нашел в логах Warning:
19:38:28.474 WARN eclipselink.metadata - metadata_warning_ignore_lazy [parent, class xx.entity.xx] начал по ниму смотреть модуль global в папке build/enhanced-classes/main нет классов

в gradle прописано основного проекта:

configure(globalModule) {
task enhance(type: CubaEnhancing)
}

Как мне собрать enhanced-classes??

пробывал в global -> task -> clean потом build and assemble.

Да, похоже что у вас в build.gradle есть ошибки.
Должно быть так:

configure(globalModule) {
    entitiesEnhancing {
        main {
            enabled = true
        }
    }
}

Можете создать свежий проект на 6.10.13 и сравнить различия в файлах build.gradle.