Play2.0+Scala Anormのパーサを追加する

お久しぶりです、こんにちは。

最近は、Play2+Scalaで開発を行っています。
データベースのアクセスはAnormを使ってますが、Floatを扱おうとするとデフォルトではパーサが用意されていません。
doubleで代用もできますが、どうしてもfloatを使いたい場合は自前で用意する必要が有ります。

import anorm._
import anorm.SqlParser._
object HogeTable {
  val simple = {
    get[Int]("id")~
    get[Float]("float_value") map { // ← ここでコンパイルエラー
      case id~float_value => (id, float_value)
    }
  }
}

Float用のパーサを追加。

object HogeTable {
  // Float用のパーサ
  implicit def rowParserFloat: Column[Float] = Column.nonNull { (value, meta) =>
    val MetaDataItem(column, nullable, clazz) = meta
    value match {
      case d: Float => Right(d)
      case _ => Left(TypeDoesNotMatch(value + "は、Floatじゃないよ!"))
   }
  }

  val simple = {
    get[Int]("id")~
    get[Float]("float_value") map {
      case id~float_value => (id, float_value)
    }
  }
}

これで、問題なくFloatもパースできるようになります。
上記例では、1オブジェクト内に記述していますが、実際はrowParserFloatメソッドを外部オブジェクトファイルにし、importで利用するようにすれば再利用できます。