MongoDB с Spring Boot и документ, содержащий похожие поля - PullRequest
0 голосов
/ 09 декабря 2018

В настоящее время я пытаюсь получить доступ к объекту в моей базе данных MongoDB.

Мой объект хранится в этом формате в db:

{
"_id" : ObjectId("some object id"), // mongodb gives this id
"my_id" : "Given id by myself",
"url" : "Some string data"
}

Класс Myobj:

@Document(collection = "MYOBJ")
public class Myobj {

    @Id
    private ObjectId _id;

    private String my_id;

    private String url;
    // getters and setters and other methods
}

Я хочу получить этот объект, используя поле my_id.В моем репозитории у меня есть эти:

public interface MyobjRepository extends MongoRepository<Myobj, String> {
    Myobj findBy_id(ObjectId _id);
    Myobj findByMy_id(String my_id);
}

Но он не в состоянии построить, он дает мне эту ошибку:

Не найдено ни одного свойства для типа Myobj!Вы имели в виду 'url'?

Я полагаю, что он не может различаться между my_id и _id.Как я могу решить эту проблему, не меняя мой объект в базе данных?

Без метода findByMy_id это работало.Этот метод вызывает ошибку компиляции.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018
@Document(collection = "MYOBJ")
public class Myobj {
    private ObjectId _id;

    @Id
    private String my_id;

    private String url;

}
public interface MyobjRepository extends MongoRepository<Myobj, String> {
    Myobj findBy_id(ObjectId _id);
    Myobj findByMy_id(String my_id);
}
0 голосов
/ 09 декабря 2018

Проблема в том, что вы внутри интерфейса MyobjRepository устанавливаете String в качестве идентификатора этого шаблона MongoRepository<Myobj, String>, и вам нужно установить ObjectId как MongoRepository<Myobj, ObjectId>, потому что вы сказали в своемMyobj класс, который вы будете использовать ObjectId _id для @Id

Я прав?

...