0

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)」メソッドです。私の意図は、mongo db からデータを読み取る一般的な方法を用意することです。だからこそ、Object を返すようにしたいのです。(間違っていたら遠慮なくコメントしてください)

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タイプを取得する正しい方法は何ですか? さらに情報が必要な場合はお知らせください

4

2 に答える 2

0

Jongo ライブラリはマップ、具体的にはLinkedHashMap. それをクラスのインスタンスにキャストしようとしていますが、UserModelJava はその方法を知りません。

Jongo ライブラリが を返すことを期待しているようですUserModel。それがカスタム設計されたクラスであると仮定すると、ライブラリが MongoDB からこのオブジェクトにデータをマップする方法を知る方法はありません。もちろん、どうにかしてそうするように具体的に指示できる場合を除きます(私はジョンゴに精通していません)。

ただし、Jacksonを使用してマップUserModel(または他のオブジェクト) をマップすることができます。

于 2014-04-03T17:47:37.317 に答える
0

ドキュメントを 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);
于 2014-04-04T09:04:33.063 に答える