Добрый день! Подскажите, пожалуйста, почему при заполнении полей в JMIX (картинка “jmix2”) и при нажатии на кнопку “ОК” в JMIX (картинка “jmix2”) в базе данных PostreSql добавляются две строки, а не одна (картинка “jmix4”). Если в кнопку “ОК” не передавать методы, и при этом нажать в самом JMIX на кнопку “ОК”, то все равно добавится одна строка в базу данных Postgresql, у которой id_motor будет равен null (картинка “jmix5”). Если я уберу совсем кнопку “ОК”, а в кнопку “добавить” передам свои методы, то добавится одна строка в базу данных, но при этом JMIX будет спрашивать у меня “You have unsaved changes” (картинка “jmix1”), если я нажму на кнопку Save, то в базу данных добавится две строки, одной из них id_motor будет равен null, если я нажму на кнопку Dont Save то добавится одна с id_motor моего пользователя, который вошел в систему.
Если у вас стандартный экран. То у него на saveAndCloseBtn
стоит action
saveAndCloseAction
со своим методом сохранения.
Когда вы добавляете ClickListener
. Вы не переопределяете дефолтной поведение кнопки. А добавляете еще одно. То есть при клике кнопки. Сущность сохраняется через дефолтный saveAndCloseAction
и потом через ваш ClickListener
(Как я понимаю он там сохраняется)
Когда вы своими руками сохраняете сущность, то по всей видимости вы делаете это не через dataContext
экрана, и скорее всего не ставите обновленную сущность в контейнер экрана. По этому jmix считает что у сущности все еще есть изменения и она не сохранена в бд.
Если вы хотите своими руками проставить id
юзера (Я так понимаю за это отвечает поле id_motor
, наименование странное) то делайте это в InitEntityEvent
Или используйте в сущносте Черты Audit, такие как CreatedBy