spring-data-mongodb, использующий fieldName вместо _id - PullRequest
0 голосов
/ 22 мая 2019

У меня есть Pojo с атрибутом

    Class A{ 
        @Id
        @Field("item_id")
        private String itemId;
    }

Когда я пытаюсь обновить документ в коллекции MongoDB на основе itemId, как показано ниже, он работает хорошо и из журналов mongo ops видит, что запрос был преобразован как _id in itemIds

Query query = new Query(Criteria.where("itemId").in(itemIds));
Update update = new Update();
update.set("field2", "abd");
mongoTemplate.updateMulti(query, update, A.class)

Когда я обновился до spring-data-mongodb-2.1.5.RELEASE, запрос, который я видел в журналах mongo, был "item_id in itemIds". Поскольку item_id не является полем и не имеет индекса для этого поля в коллекции, выполнение запроса заняло целую вечность.

Любая помощь, чтобы понять, почему библиотека данных Spring создает запрос как _id в более старой версии и использует это поле в более новой версии?

1 Ответ

1 голос
/ 22 мая 2019

После 2-минутного поиска в документации Spring (https://docs.spring.io/spring-data/mongodb/docs/1.3.3.RELEASE/reference/html/mapping-chapter.html):

Ниже показано, какое поле будет отображено в поле документа '_id':

  • Поле, помеченное @Id (org.springframework.data.annotation.Id), будет сопоставлено с полем _id.
  • Поле без аннотации, но с именованным идентификатором будет отображено в поле '_id'.

Вы уже пробовали это?

...