MoneyField AddOn doesn't work for standard Vaadin Crud

I use the MoneyField within an standard vaadin crud ( com.vaadin.flow.component.crud )
My crud editor contains the MoneyField as UI edit element for an DTO attribute of type MonetaryAmount.

If the EDIT Icon within the crud-grid is clicked the first time, the editor open and all edit elements are filled properly with their values from the DTO.

If the EDIT icon is clicked the second time, then the MoneyField elements remains empty, all other fields are filled appropriately with the values from the DTO.

Attached you can find a MVE. In order to prevent own errors, it is closely to the original Vaadin example from CRUD component | Vaadin components .

What’s my fault ?

@PermitAll
@Route("test")
public class TestView extends VerticalLayout {

    @Data // Lombok for short
    @NoArgsConstructor
    @AllArgsConstructor
    @EqualsAndHashCode(onlyExplicitlyIncluded = true)
    public static class TestDto {

        @EqualsAndHashCode.Include
        private int id;
        private String name;
        private MonetaryAmount price;
    }

    // UI
    private final Crud<TestDto> crud;

    // data
    private List<TestDto> database = new ArrayList<>();

    public TestView() {
        crud = new Crud<>(TestDto.class, createEditor());

        setupDataProvider();
        this.crud.addDeleteListener(event -> this.delete(event.getItem()));

        database.addAll(List.of(
            new TestDto(1, "Item 1", MoneyUtils.ZERO_EURO),
            new TestDto(2, "Item 2", MoneyUtils.ZERO_EURO),
            new TestDto(3, "Item 3", MoneyUtils.ZERO_EURO)
        ));
        add(crud);
    }

    private void setupDataProvider() {
        var dataProvider = new AbstractBackEndDataProvider<TestDto, CrudFilter>() {

            @Override
            protected Stream<TestDto> fetchFromBackEnd(Query<TestDto, CrudFilter> query) {
                return database.stream();
            }

            @Override
            protected int sizeInBackEnd(Query<TestDto, CrudFilter> query) {
                return database.size();
            }
        };
        this.crud.setDataProvider(dataProvider);
    }

    private void delete(TestDto item) {
        database.remove(item);
    }

    private CrudEditor<TestDto> createEditor() {
        Binder<TestDto> binder = new Binder<>(TestDto.class);

        TextField nameField = new TextField("Name");
        binder.forField(nameField)
            .bind(TestDto::getName, TestDto::setName);

        MoneyField priceField = new MoneyField("Price");
        binder.forField(priceField)
            .bind(TestDto::getPrice, TestDto::setPrice);

        FormLayout form = new FormLayout(nameField, priceField);
        return new BinderCrudEditor<>(binder, form);
    }

}