在mongo集合上使用时,Spring数据版本注释不会递增

时间:2013-05-21 08:51:01

标签: java versioning spring-data spring-data-mongodb

我使用mongodb的spring数据来存储二进制数据,如图像等 我想维护一个版本字段以附加到网址以欺骗浏览器缓存图像。

请参阅下面的文档基类:

import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.mongodb.core.index.Indexed;

public abstract class BaseDocument {

    @Id
    @Indexed(unique=true)
    protected long id;
    protected byte[] data;
    protected String mimeType;
    protected String filename;
    protected String extension;
    @Version
    private Long version;

我还有一个包装MongoOperations的存储库来保存我的文档。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class DocumentRepository implements IDocumentRepository {

    @Autowired
    private MongoOperations mongoTemplate;

    @Override
    public <D extends BaseDocument> void saveDocument(D document) {
        mongoTemplate.save(document);
    }

为了实现版本控制,我做了一些狩猎,发现有一个@Version注释为spring mongo,但是已经弃用了。然后我发现应该使用spring数据@Version注释。所以我继续使用弹簧数据@Version注释。

我期望发生的是每次保存文档时我的版本字段都会增加。我多次覆盖同一个文档,但我的版本字段没有像我期望的那样增加。

我做错了什么或者还有其他我需要做的事情吗?

1 个答案:

答案 0 :(得分:10)

为了使用@Version注释,您需要通过在应用程序上下文中添加一行来启用Spring Data MongoDB中的审核:

<mongo:auditing />