2013-05-21 6 views
8

ためジョダ日時暗黙的な変換私はジョダDateTimeフィールドの場合クラスを持っている: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) 
} 
関連する問題