有没有办法避免在 Spring 数据 MongoDB 查询中将文档字段显式写入字符串?

Is there a way to avoid explicitly writing document fields as Strings in Spring Data MongoDB queries?

我最近开始使用 Spring 数据 MongoDB,我想知道是否有任何方法可以避免显式写入实体的属性,因为它们存储在数据库中。例如,假设以下 class 表示 MongoDB 集合:

public class Employee {

  @Id
  public String id;
  
  private double salary;

  ...
}

如果我想使用 MongoTemplate 进行查询,例如:

public List findEmployeeBySalaryRange(double salary) {
        Query query = new Query();
        query.addCriteria(Criteria.where("salary").lt(salary));
        ...
}

我想避免写"salary",因为如果字段名称发生变化,这将使代码在将来更难维护。我正在考虑从 class 属性中获取字段名称之类的东西,但我不太确定如何。有办法吗?我查看了文档,但没有找到任何相关内容,除非我错过了。

提前致谢。

您可以创建一个实用程序 Class 来存储所有数据库字段名称,在字段上使用 @Field 注释和来自 class 的常量,并在查询中使用该常量以避免容易出错硬编码字符串。

在员工模型中

@Field(DbFields.SALARY)
private double salary;

在查询中,

query.addCriteria(Criteria.where(DbFields.SALARY).lt(salary));

在 DbFields 实用程序中 class

public static final String SALARY = "salary";