2016-07-22 2 views
0

LocalDateTimeフィールドを持つエンティティをデータストアに保存できます。ただし、 LocalDateTimeフィールドを持つエンティティでクエリを実行しようとしています。私は、クエリを作成し、asListメソッドを呼び出すと、以下の例外がスローされます。MongoDBのからJavaオブジェクトへのときのマップのエンティティjava.time.LocalDateTimeクラスが持っていないようMongoDBのLocalDateTimeフィールドを持つエンティティに対してクエリを作成できません。

java.lang.RuntimeException: org.mongodb.morphia.mapping.MappingException: No usable constructor for java.time.LocalDateTime 

答えて

0

はMorphiaは、デフォルトコンストラクタに依存しています1つは例外をスローします。

次のようにデータを変換するために@PreLoadライフサイクルアノテーションを使用することができます。現在はありません

@Entity 
public class MyEntity { 
    public MyEntity() { 

    } 

    @Id 
    private ObjectId id; 
    private LocalDateTime localDateTime; 

    @PreLoad 
    public void preLoad(DBObject obj) { 
     BasicDBObject object = (BasicDBObject) obj.get("localDateTime"); 
     BasicDBObject date = (BasicDBObject) object.get("date"); 
     BasicDBObject time = (BasicDBObject) object.get("time"); 
     localDateTime = LocalDateTime.of(date.getInt("year"), 
             date.getInt("month"), 
             date.getInt("day"), 
             time.getInt("hour"), 
             time.getInt("minute"), 
             time.getInt("second"), 
             time.getInt("nano")); 
     obj.removeField("localDateTime"); 
    } 
} 
0

MorphiaでのJava 8日付/時刻型のサポート。うまくいけば、1.3リリースでこのサポートを追加する新しいモジュールが現在コードレビューにあります。

関連する問題