Изменение значения CheckBoxTreeTableCell только после сохранения в базе данных на JavaFX

У меня есть TreeTableView с отображением данных из базы данных. Мне необходимо, чтобы при клике по ячейке с CheckBox сервис изменил значение в базе данных и при успешном изменении установил значение модели в соответствии с БД и отобразил в интерфейсе приложения "галочку" в CheckBox (или наоборот).

Я попробовал несколькими способами, например так:

columnWithCheckBox.setOnEditCommit(event -> {
            TreeItem<Model> currentItem = event.getTreeTableView().getTreeItem(event.getTreeTablePosition().getRow());
            if (currentItem != null) {
                boolean oldValue = currentItem.getValue().isFirstBooleanValue();
                boolean newValue = event.getNewValue();
                service.updateSettingModel(currentItem.getValue())
                        .subscribe(success -> {
                            if (success.isFirstBooleanValue()) {
                                currentItem.getValue().setFirstBooleanProperty(newValue);
                            } else {
                                currentItem.getValue().setFirstBooleanProperty(oldValue);
                            }
                        }, throwable -> {
                            currentItem.getValue().setFirstBooleanProperty(oldValue);
                            log.error("Error updating database: {}", throwable.getMessage());
                        });
            }
        });

Однако, как указано в документации, такое невозможно. На основании документации CheckBoxTableCell:

If you want to be notified of changes, it is recommended to directly observe the boolean properties that are manipulated by the CheckBox.

Как мне построить логику так, чтобы была консистентность между моделью и базой данных?


Ответы (0 шт):