java.lang.ClassCastException: Невозможно привести java.util.LinkedHashMap к определенному классу.

Я хочу иметь общий метод для вставки и получения объектов из коллекции MongoDB. Для всех операций с mongo db я использую библиотеку Jongo. Вот мой код:

 public UserModel getUserByEmailId(String emailId) {
    String query = "{emailId:'"+emailId+"'}";
    Object obj = storage.get(query);

    UserModel user = (UserModel) obj; 
    //getting exception on above line. I am sure that I have UserModel 
    //type of data in obj
    // Exception is: java.lang.ClassCastException: Cannot cast java.util.LinkedHashMap to UserModel
    return user;
}

Вот метод "storage.get(String query)". Мое намерение состоит в том, чтобы иметь общий метод для чтения данных из Монго БД. Вот почему я хочу вернуть объект. (Не стесняйтесь комментировать, если я не прав)

public Object get(String query) {
    Object obj = collection.findOne(query).as(Object.class);
    return obj;
}

//Here: collection is my "org.Jongo.MongoCollection" type object.

Как правильно получить тип объекта UserModel из "Объекта"? Дайте мне знать, если вам нужно больше информации

2 ответа

Решение

Если вам нужно только сопоставить документы с объектами UserModel

collection.findOne("{name:'John'}").as(UserModel.class);

Если вы ищете общий подход:

public <T> T get(String query, Class<T> clazz) {
  return collection.findOne(query).as(clazz);
}
...
UserModel user = this.get("{name:'John'}", UserModel.class);

Библиотека Jongo возвращает карту, в частности LinkedHashMap, Вы пытаетесь привести это к экземпляру вашего UserModel класс, который Java не знает, как это сделать.

Вы, кажется, ожидаете, что библиотека Jongo вернет UserModel, Предполагая, что это ваш специально разработанный класс, библиотека не сможет узнать, как сопоставить данные из MongoDB с этим объектом. Если, конечно, вы не могли бы как-то конкретно проинструктировать его об этом (я не знаком с Джонго).

Однако вы можете использовать Джексона, чтобы отобразить карту на UserModel (или другие объекты).

Другие вопросы по тегам