10

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

请参阅下面的我的文档基类:

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

为了实现版本控制,我四处寻找,发现 spring mongo 有一个 @Version 注释,但已被弃用。然后我发现应该改用spring数据@Version注释。所以我继续使用spring数据@Version注释。

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

我做错了什么还是我需要做一些额外的事情?

4

1 回答 1

10

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

<mongo:auditing />
于 2013-05-22T18:15:23.963 回答