Измените название поля id - PullRequest
0 голосов
/ 14 июля 2020

В java Spring и в MongoDB я создаю следующее поле (id) класса:

    @Id 
    public String _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!

Мой вопрос: как изменить имя поля id в java spring (если это вообще возможно)

EDIT: я пробовал с @Field ("_id"), но он не работает.

Спасибо,

1 Ответ

1 голос
/ 14 июля 2020

TL; DR

Предупреждение исходит от MongoDB, который недоволен полем @Id, имеющим имя свойства, отличное от тех, которые поддерживаются данными Spring на основе root причина

На основе поддерживаемых имен полей Id, хранящихся в наборе SUPPORTED_ID_PROPERTY_NAMES включает {"id", "_id}.

При этом ваше имя поля id должно быть принятым, что, по-видимому, не принято. Это может быть из другого документа. Вы должны проверить, сколько у вас @Document.

Обычно базовый c документ mongoDB в Spring включает две основные информации: 1015 *

Аннотация @Document в объекте модели (например, Пользователь) Аннотация @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 и его s образец проекта , чтобы увидеть «лучшие практики для начала» при создании таких проектов

...