Оптимистическая блокировка не работает с базой весенних данных @version

Как упоминалось в справочном руководстве по базе весенних данных, я пытаюсь включить функцию оптимистичной блокировки, используя аннотацию @Version. Я ожидаю, что Couchbase заполнит поле версии, когда документ будет видоизменен. Но похоже, что он не заполняет поле версии. его всегда 0. Ниже приведен мой Pojo, и я использую crudRepository для сохранения документа. когда я обновляю, я пытаюсь отправить версию как 1, чтобы имитировать исключение оптимальной блокировки. Но у меня не было никаких исключений, обновление прошло нормально. Поскольку документация не очень помогает, я не мог двигаться дальше. Любая помощь будет оценена?

@Document
public class Project extends BusinessEntity {

    private static final long serialVersionUID = 1665165729053936288L;

    @NotNull
    @Field
    private String name;

    @Field
    private String description;

    @Version
    private long version;


    public Project() {

    }

    public Project(String name) {
        this.name = name;
    }

    public Project(String name, String description) {
        super();
        this.name = name;
        this.description = description;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the description
     */
    public String getDescription() {
        return description;
    }

    /**
     * @param description the description to set
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * @return the version
     */
    public long getVersion() {
        return version;
    }

    /**
     * @param version the version to set
     */
    public void setVersion(long version) {
        this.version = version;
    }



}

person salamsoft    schedule 10.09.2014    source источник


Ответы (2)


Это моя вина. Couchbase заполняет поле версии. Но мы должны отправить номер версии при сохранении.

person salamsoft    schedule 11.09.2014
comment
Можете ли вы расширить свой ответ? У меня такая же проблема, но я не совсем понимаю, как вы ее исправили. - person DavidR; 28.09.2017
comment
Да, то же самое здесь, не могли бы вы поделиться с нами этим ответом с помощью кодирования. - person Akshay Uttur; 27.05.2020

Другая причина, по которой это может потерпеть неудачу, заключается в том, что вам нужно иметь геттер для вашего поля @version.

person DavidR    schedule 28.09.2017