我使用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注释。
我期望发生的是每次保存文档时我的版本字段都会增加。我多次覆盖同一个文档,但我的版本字段没有像我期望的那样增加。
我做错了什么或者还有其他我需要做的事情吗?
答案 0 :(得分:10)
为了使用@Version注释,您需要通过在应用程序上下文中添加一行来启用Spring Data MongoDB中的审核:
<mongo:auditing />