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

Tre*_*ing 9 java versioning spring-data spring-data-mongodb

我正在使用带有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;
Run Code Online (Sandbox Code Playgroud)

我还有一个包装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);
    }
Run Code Online (Sandbox Code Playgroud)

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

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

我做错了什么或者我还需要做些什么吗?

Mac*_*iak 10

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

<mongo:auditing />
Run Code Online (Sandbox Code Playgroud)

  • 您需要在类路径上拥有最新的Spring Data MongoDB版本 - 1.2.1.如果异常仍然存在,请查看我的解释如何使用审计:http://maciejwalkowiak.pl/blog/2013/05/24/auditing-entities-in-spring-data-mongodb/.如果在此处粘贴整个XML配置仍有问题 (2认同)