public void undoChanges()
    {
        IUndoManager undoManager = getAdapter(IUndoManager.class);
        if (undoManager != null) {
            undoManager.undo();
        } else {
            DBECommandContext commandContext = getCommandContext();
            if (commandContext != null && commandContext.getUndoCommand() != null) {
                if (!getDatabaseObject().isPersisted() && commandContext.getUndoCommands().size() == 1) {
                    //getSite().getPage().closeEditor(this, true);
                    //return;
                    // Undo of last command in command context will close editor
                    // Let's ask user about it
                    if (ConfirmationDialog.confirmAction(
                            null,
                            NavigatorPreferences.CONFIRM_ENTITY_REJECT,
                            ConfirmationDialog.QUESTION,
                            getDatabaseObject().getName()) != IDialogConstants.YES_ID) {
                        return;
                    }
                }
                commandContext.undoCommand();
                firePropertyChange(IEditorPart.PROP_DIRTY);
            }
        }
    }
Saves data in all nested editors
@param monitor progress monitor
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java