当前位置: 首页 > 知识库问答 >
问题:

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

蓝苗宣
2023-03-14

我在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;

我还有一个存储库,用于保存我的文档。

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

在尝试实现版本控制时,我四处寻找,发现SpringMongo有一个@Version注释,但已被弃用。然后我发现应该使用spring data@Version注释。所以我继续使用spring data@Version注释。

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

我是否做了一些不正确的事情,或者我是否需要做一些额外的事情?

共有1个答案

壤驷鸿祯
2023-03-14

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

<mongo:auditing />
 类似资料:
  • 我对使用数据注释到DTO类感到困惑。这是我的示例类。 我在网上读到,特别是在DTO类上使用数据注释将允许通过使用生成的设置器来更改字段的值。 我应该删除lombok Data注释吗?并手动实现getter和setter。 谢谢:)

  • 我正在使用Spring数据为我的应用程序获取数据。 repository类使用mongo实体类,该实体类作为上游依赖项添加到我的项目中,这意味着我无法控制更改该类的源代码。因此,我无法使用组织中的文档注释。springframework。数据mongodb。果心映射到我的mongo实体类。 在这里,我对Dummy类的源代码没有任何控制权,因此我无法添加文档来指定该类的集合名称 如何在使用查询mon

  • 另外,请举例说明何时使用annotaion。 提前感谢。

  • 我已经按照这里描述的“测试Spring MVC切片”一节为Spring MVC控制器编写了一个测试类。类如下所示: 当我运行它时,我得到了以下错误: 有人能解释为什么@webmvctest注释对我不起作用吗?

  • 问题内容: 我在shell中找到了一些列出集合的答案,但是我发现所有在nodejs脚本中列出集合的答案似乎都已被弃用,像like 和return 这样的答案都没有方法。 问题答案: 在用于node.js的MongoDB驱动程序的2.0版本中,您可以用来获取包含所有集合信息的游标。然后,您可以调用光标以检索信息。

  • 但是显示错误“Distinc expected”,是因为我在@Query注释中使用了*而得到的吗?请问怎么了?