MongoDB и Spring: как правильно выполнить запрос с двумя полями в одном запросе к репозиторию? - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть следующее POJO:

    public class Round {

        private ObjectId _id;

        @NotEmpty
        @Getter
        @Setter
        @Accessors(fluent = true)
        @JsonProperty("userId")
        private String userId;

        // rest of fields

}

В моем загрузочном проекте Spring я пытаюсь запросить мой mongoDB по userId и _id следующим образом:

@Repository
public interface RoundRepository extends MongoRepository<Round, String> {

    Optional<Round> findByUserIdAnd_id(String userId, ObjectId objectId);

}

Однако когда я пытаюсь gradlew bootRun, я теперь получаю:

Unsatisfied dependency expressed through constructor parameter 0; 
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: 
Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'roundRepository': Invocation of init method failed; nested exception is 
org.springframework.data.mapping.PropertyReferenceException: No property and found for type String! Traversed path: Round.userId.

Каков правильный способ запроса MongoDB с 2 параметрами?

1 Ответ

1 голос
/ 26 апреля 2020

Вы должны использовать аннотацию @Document в классе Round и атрибут @Id для идентификатора аннотации:

@Document
public class Round {


        @Id
        private ObjectId _id;

        @NotEmpty
        @Getter
        @Setter
        @Accessors(fluent = true)
        @JsonProperty("userId")
        private String userId;

        // rest of fields

}
...