Как запретить Spring Data MongoDB отображать поле идентификатора как идентификатор объекта?

Я настроил свой собственный механизм для присвоения идентификаторов объектам домена, поэтому при их сохранении мне не так уж важно отслеживать, что им назначает MongoDB. Однако я называю поля идентификации для своих доменных классов id, потому что это лаконично и понятно. Проблема в том, что согласно к документации, Spring автоматически сопоставит это поле с присвоенным MongoDB ObjectID. Как мне предотвратить это, не переименовывая мое поле id или не определяя пользовательское поле идентификации, аннотированное @Id, только для того, чтобы обойти это?


person Psycho Punch    schedule 22.06.2017    source источник


Ответы (2)


Используйте @MongoId вместо @Id

@MongoId(targetType = FieldType.STRING)
protected String id;

Он будет хранить строку, даже если «форма» является ObjectId

person Montoya    schedule 04.06.2020

Боюсь, вы не можете сделать это с данными Spring. MongoDB (и, в свою очередь, данным Spring) требуется поле для уникальной идентификации каждого document. Если у вас уже есть поле id, и если оно уникально для каждого объекта, то да, вы можете аннотировать его с помощью @Id, а mongo позаботится обо всем остальном.

Если нет, вам придется создать новое поле и сопоставить его с _id.

person Darshan Mehta    schedule 22.06.2017
comment
Не могли бы вы указать мне здесь: stackoverflow.com/questions/60057371/? - person Pra_A; 06.02.2020