2016-07-22 60 views
0

我可以將具有LocalDateTime字段的實體保存到數據存儲中。但是, 我想查詢具有LocalDateTime字段的實體。當我創建一個查詢和調用asList方法,除了以下拋出:無法在MongoDB上具有LocalDateTime字段的實體上創建查詢

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

回答

0

嗎啡依賴於默認的構造函數時映射實體從MongoDB中到Java對象,java.time.LocalDateTime類沒有它引發異常。

您可以使用@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

目前還不能對嗎啡的Java 8日期/時間類型支持。目前代碼審查中有一個新模塊,希望在1.3版本中增加這種支持。

相關問題