2013-05-21 29 views
8

喬達日期時間Implicit轉換我的情況下,類喬達日期時間字段:ReactiveMongo 0.9:用於Macros.handler

case DomainPositionData(domain: String, position: Int, change: Option[Int], date:DateTime) 

嘗試使用宏來生成讀者&作者:

implicit val domPosFormat = Macros.handler[DomainPositionData] 

我:

Implicit org.joda.time.DateTime for 'value date' not found 

但我還沒有找到信息如何實現我自己的隱式轉換器。

回答

16

看着爲existing handlers的源代碼,你可以嘗試創建這樣的(未測試)的隱式轉換:

import org.joda.time.DateTime 

implicit object BSONDateTimeHandler extends BSONHandler[BSONDateTime, DateTime] { 
    def read(time: BSONDateTime) = new DateTime(time.value) 
    def write(jdtime: DateTime) = BSONDateTime(jdtime.getMillis) 
} 
+0

經過測試,正常工作。 –

2

另一種方法是使用新的BSONReader & BSONWriter(具有2個型參數0.9):

implicit object DatetimeReader extends BSONReader[BSONDateTime, DateTime]{ 
    def read(bson: BSONDateTime): DateTime = new DateTime(bson.value) 
} 

implicit object DatetimeWriter extends BSONWriter[DateTime, BSONDateTime]{ 
    def write(t: DateTime): BSONDateTime = BSONDateTime(t.getMillis) 
}