Morphia @Version不工作

时间:2015-02-04 19:26:01

标签: java mongodb morphia

我正在使用morphia 0.109并定义了一个基类,如下所示:

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

预期的Morphia实体

public class ItemTest extends MorphiaData {
    public Long testValue;
}

当我将ItemTest的实例保存到mongoDB时,文档如下所示:

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

我希望在文档中看到 mongodocversion 的值。

morphia文档提供了有关版本注释的以下信息:

  

此字段将自动为您管理 - 没有必要   设置一个值,你不应该这样做。

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

我相信我也坚持。我尝试了以下修复但没有成功:

  1. 在子类中移动版本注释。
  2. 删除'私人'声明版本参数。
  3. 非常感谢任何建议。

    编辑添加:我正在使用的保存过程:

    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" );
    }