Spring mongo InvalidPersistentPropertyPath с @Version

Я переходил с весенней загрузки 2.0.0 на 2.1.1. После миграции одна из нескольких проблем, с которыми я столкнулся, - это InvalidPersistentPropertyPath для документов с определенными полями и @version. Раньше это работало с Spring boot 2.0.0.

Ниже приведен образец документа, который я хочу сохранить в mongo db:

@Document
@Data
@NoArgsConstructor
public class Report  implements Serializable {
    @Id
    protected String id;

    @NotNull
    @Field("ReportName")
    protected String reportName;

    @Field("IA1Value")
    private Long iA1Value = 0L;

    @Field("IA2Value")
    private Long iA2Value = 0L;

    @Version
    private Long version;

    public Report(String reportName) {
        this.reportName = reportName;
    }

}

Я написал тестовый пример для чтения и сохранения в базе данных mongo.

org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property 'IA1Value' found on class com.experiments.migration.mongo.Report! Did you mean: IA2Value,IA1Value,iA2Value,iA1Value?

Но если @Version прокомментирован, он работает ....

Я хотел бы знать, какое отношение имеет @Version.

Весь образец находится в:

https://github.com/KencyK/spring-boot-migration

ПРИМЕЧАНИЕ. НЕ НАДО предлагает сохранить имя поля. Потому что я знаю, что это исправит. Я хотел бы знать, почему это работает, если я удалю @Version.

Также я пробовал более старую версию Lombok, которая использовалась в весенней загрузке 2.0.0.

попробуйте поместить объявление поля version выше `iA1Value`

Erfan Ahmed 03.01.2019 04:45

@ErfanAhmed Даже после размещения поля версии выше проблема НЕ исправлена.

Kency Kurian 03.01.2019 05:04

iA1Value и iA2Value устанавливаются как 0L, а reportName устанавливаются конструктором. Почему в вашем классе нет метода геттер, сеттер? попробуйте, назначив метод установки геттера для version.

Erfan Ahmed 03.01.2019 05:09

Я использую здесь ломбок. Класс отчета аннотируется @Data, который создает геттеры и сеттеры для всех ваших полей. Я все равно пробовал то, что вы предложили, и, как я ожидал, все еще не работает. Раньше это работало с весенней загрузкой 2.0.0.

Kency Kurian 03.01.2019 05:21

попробуйте другой тестовый пример, вместо аннотации @Version используйте аннотацию @Field для поля version. посмотрим, работает это или нет. Если работает, попробуйте добавить обе аннотации.

Erfan Ahmed 03.01.2019 05:25

Удаление @ Version работает, как я уже упоминал ... Но нам нужна @ Version. В любом случае другое предложение также не работает.

Kency Kurian 03.01.2019 06:47
0
6
674
0

Другие вопросы по теме