java.time.LocalDateTime クラスには例外がスローされるコンストラクターがないため、MongoDB から Java オブジェクトにエンティティーをマップするとき、Morphia はデフォルトのコンストラクターに依存します。
@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");
}
}