Я настроил свой собственный механизм для присвоения идентификаторов объектам домена, поэтому при их сохранении мне не так уж важно отслеживать, что им назначает MongoDB. Однако я называю поля идентификации для своих доменных классов id
, потому что это лаконично и понятно. Проблема в том, что согласно к документации, Spring автоматически сопоставит это поле с присвоенным MongoDB ObjectID. Как мне предотвратить это, не переименовывая мое поле id или не определяя пользовательское поле идентификации, аннотированное @Id
, только для того, чтобы обойти это?
Как запретить Spring Data MongoDB отображать поле идентификатора как идентификатор объекта?
Ответы (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
Не могли бы вы указать мне здесь: stackoverflow.com/questions/60057371/?
- person Pra_A; 06.02.2020