Morphia @Version не работает

1

Я использую morphia 0.109 и определил базовый класс следующим образом:

@Entity
public abstract class MorphiaData {
    @Id protected ObjectId objectId;
    @Version private Long mongodocversion;
}

И предполагаемое суждение Морфии

public class ItemTest extends MorphiaData {
    public Long testValue;
}

Когда я сохраняю экземпляр ItemTest в mongoDB, документ выглядит следующим образом:

{
    "_id" : ObjectId("54d26ed66aca89c0717e8936"),
    "className" : "test.ItemTest",
    "testValue" : NumberLong(1423077078)
}

Я ожидаю увидеть значение mongodocversion в документе.

В документации по морфиям представлена следующая информация об аннотации версии:

Это поле будет автоматически управляться для вас - нет необходимости устанавливать значение, и вы все равно не должны этого делать.

@Entity
class MyClass {
   ...
   @Version Long v;
}

который, я считаю, я тоже придерживаюсь. Я попытался выполнить следующие исправления без успеха:

  1. Перемещение аннотации версии в дочернем классе.
  2. Удаление "частного" объявления параметра версии.

Любые советы будут очень признательны.

Изменить для добавления: процесс сохранения, который я использую:

DBObject document = MongoDbFactory.getMorphia().toDBObject(this);

DB db = MongoDbFactory.getClient();
DBCollection coll = db.getCollection(noSqlCollection.toString());

if (this.objectId != null) {
    //This is an update
    BasicDBObject searchQuery = new BasicDBObject().append("_id", this.objectId);
    coll.update(searchQuery, document);
} else {
    //This is just an add
    coll.insert(document);
    this.objectId = (ObjectId)document.get( "_id" );
}
Теги:
morphia

1 ответ

1
Лучший ответ

Этот тест в настоящее время проходит по jenkins: https://github.com/mongodb/morphia/blob/master/morphia/src/test/java/org/mongodb/morphia/optimisticlocks/VersionTest.java#L20-20

  • 0
    Спасибо за ссылку, я буду расследовать дальше и отправлять обратно.
  • 0
    Я прошел тестовые случаи и выявил несколько различий, в частности, вы используете хранилище данных, в то время как я использую коллекцию для сохранения. Я обновил свой вопрос, включив в него процедуру сохранения. Не могли бы вы сказать мне, в этом ли разница?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню