2017-11-02 8 views
-3

これは私がとjava.lang.ClassCastExceptionを取得していますエラーです:java.lang.Integerのは、ここに私のPOJOですcom.mongodb.DBObjectMorphiaマッパー例外は

にキャストすることはできません

@Entity("cars") 
@Getter 
@Setter 
public class Car { 
    @Id 
    private ObjectId id;  

    private String defaultChoice;  

    private Object input; 
} 

私はモンゴで

{ 
    "defaultChoice": "sampleChoice", 
    "input": 432 
} 

としてJSONとmorphiaを使用してモンゴで車のコレクションでこれを保存することができた、フィールドの入力はタイプで保存されINT32

morphiaを使用してデータを取得しようとすると例外が発生します。 Objectをタイプとしてフィールドをマップ/逆シリアル化することはできません。私はInteger inputに変更しようとしました。そしてそれは働いた。可能であれば、このフィールドをオブジェクトとして保持してみてください。

これを修正する方法はありますか?カスタムマッパーを書くことができますか?

+1

属性にオブジェクトクラスを使用しているのはなぜですか?それは432を含む整数として定義する必要があります。 – notionquest

+0

なぜ、直接の 'Object'をフィールドとして使用したいのですか?あなたは何か特別なものを使用できませんか? – Lino

答えて

0

MongoDBのベストプラクティスは、コレクション内の同じフィールドに同じフィールドタイプを使用することです。 Morphiaはこのアプローチを想定して設計されています。他の人が言ったように、このフィールドにはIntegerを使うべきですが、Morphiaには他のJavaクラスをサブ文書として埋め込むことができます。