更改ID字段的名称

时间:2020-07-13 21:45:50

标签: java spring spring-boot

在Java Spring和MongoDB下,我正在创建类的以下字段(id):

    @Id 
    public String _id;

为了创建名称为_id的标识符字段,但我得到一个带有编译警告的标识符ID:WARN 11916 --- [ main] o.s.d.m.c.m.BasicMongoPersistentProperty : Customizing field name for id property not allowed! Custom name will not be considered!

我的问题是如何在java spring中更改id字段的名称(如果可能的话)

编辑:我尝试使用@Field(“ _ id”),但无法正常工作。

谢谢

1 个答案:

答案 0 :(得分:1)

TL; DR

警告来自MongoDB,该域对@Id字段具有除基于root cause的spring数据支持的属性名称以外的属性名称感到不满

根据存储在集合SUPPORTED_ID_PROPERTY_NAMES中的受支持的ID字段名称,包括{“ id”,“ _id}。

话虽这么说,您应该接受id字段的命名,但显然不可以。它可能来自另一个文档。您应该检查一下@Document的数量。

通常,Spring中的基本mongoDB文档包括两个主要信息:

  1. 模型对象(例如,用户)中的@Document批注
  2. 模型类中id属性的@Id注释

这里有个例子:

@Document
public class User {
     
     @Id
     private BigInteger id;

     // other fields
     /**
      * Returns the identifier of the document.
      * 
      * @return the id
     */
    public BigInteger getId() {
         return id;
    }

    // getters & setters for other fields (id have only a getter /!\)
}

您在问题描述中描述的内容对于基于JPA的SQL数据库实体更方便,而不适用于MongoDB文档。

此外,我鼓励您检查Spring Data MongoDB项目以及此sample project,以查看创建此类项目时的“最佳实践开始”