Помогите связать vaadin8 с hibernate

Доброго времени суток. Вопрос про vaadin8+hibernate. Есть маленькое недопонимание, необходимо связать данные, которые вводятся с формы(DoctorForm) с БД для последующего отображения в Grid. Данные также должны заноситься в HSQLDB с in-process режимом, использую hibernate для записи данных в мою БД(сервисы с CRUD операциями). Пытался работать через биндер, e.t.c. Ничего не получается, многочисленные туториалы в интернете лишь путают, не могу найти адекватную информацию про vaadin 8. Каждый раз, нажимая кнопку “save”, в БД выводится toString() с null значениями по всем String переменным, необходимо, чтобы значения нулям равны не были. Проблемы с отображением в Grid нет, строки там появляются, только пустые.

public class DoctorForm {

    private DoctorService docSer = new DoctorService();
    private Doctor doctor = new Doctor();
    private Binder<Doctor> binder = new Binder<>(Doctor.class);

    public Window addDoctor(Grid grid){

        Window window = new Window();
        window.center();
        window.setModal(true);
        window.setWidth("650");
        window.setHeight("450");

        VerticalLayout add = new VerticalLayout();
        add.setSizeFull();
        add.setMargin(true);

        TextField lName = new TextField("Фамилия");
        TextField fName = new TextField("Имя");
        TextField mName = new TextField("Отчество");
        TextField spec = new TextField("Специальность");

        Button save = new Button("Сохранить");
        Button cancel = new Button("Отменить");

        VerticalLayout doctorWindow = new VerticalLayout();
        doctorWindow.setMargin(true);
        doctorWindow.setSizeFull();

        HorizontalLayout names = new HorizontalLayout();
        names.addComponents(lName, fName, mName);
        HorizontalLayout pnumber = new HorizontalLayout();
        pnumber.addComponents(spec);
        HorizontalLayout buttons = new HorizontalLayout();
        buttons.addComponents(save, cancel);

        save.addClickListener(e -> {
            docSer.create(doctor);
            HibernateUtil.getSessionFactory().openSession();
            binder.forField(lName).bind(Doctor::getLn, Doctor::setLn);
            binder.forField(fName).bind(Doctor::getFn, Doctor::setFn);
            binder.forField(mName).bind(Doctor::getMn, Doctor::setMn);
            binder.forField(spec).bind(Doctor::getSpecialty, Doctor::setSpecialty);
            try {
                binder.writeBean(doctor);
            } catch (ValidationException e1) {
                e1.printStackTrace();
            }
            List<Doctor> doctors = docSer.readAll();
            grid.setItems(doctors);
            window.close();

        });

        cancel.addClickListener(e -> window.close());

        add.addComponents(names, pnumber, buttons);

        window.setContent(add);

        return window;
    }
}

public class DoctorTable {
//    private DoctorForm df = new DoctorForm();
    private DoctorService ds = new DoctorService();
    private Grid<Doctor> doctorGrid = new Grid<>(Doctor.class);

    public VerticalLayout docTable(){
        Label label = new Label("Доктора");

        doctorGrid.removeAllColumns();

        doctorGrid.addColumn(Doctor::getLn).setCaption("Фамилия");
        doctorGrid.addColumn(Doctor::getFn).setCaption("Имя");
        doctorGrid.addColumn(Doctor::getMn).setCaption("Отчество");
        doctorGrid.addColumn(Doctor::getSpecialty).setCaption("Специальность");

        doctorGrid.setSizeFull();

        Button add = new Button("Добавить");
        Button update = new Button("Редактировать");
        Button delete = new Button("Удалить");

        HorizontalLayout buttons = new HorizontalLayout(add, update, delete);

        VerticalLayout doctors = new VerticalLayout(label, doctorGrid, buttons);

        add.addClickListener(e -> buttons.getUI().addWindow(new DoctorForm().addDoctor(doctorGrid)));


        return doctors;
    }

    public void updatelist(){
        List<Doctor> doclist = ds.readAll();
        doctorGrid.setItems(doclist);
    }

}

Solved