フィールドを binary(64) としてデータベースに保存しています。Scala を使用して Anorm パーサーを使用して抽出しようとしています。どうすればそれができますか?
StreamAPI のドキュメントがhttp://www.playframework.org/documentation/2.0.2/ScalaAnormにあるため、私は主に ParserAPI の使用に関心があります。
フィールドを binary(64) としてデータベースに保存しています。Scala を使用して Anorm パーサーを使用して抽出しようとしています。どうすればそれができますか?
StreamAPI のドキュメントがhttp://www.playframework.org/documentation/2.0.2/ScalaAnormにあるため、私は主に ParserAPI の使用に関心があります。
申し訳ありませんが、テストする時間がありませんが、可能な解決策は次のとおりです。
最初に、列の内容をバイト配列に変換できる暗黙のトランスフォーマーを定義します。
implicit def rowToByteArray: Column[Array[Byte]] = Column.nonNull { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match
case data: Array[Byte] => Right(data)
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass + " to Byte Array for column " + qualified))
}
次に、適切な行パーサー ファクトリを定義できます。
def bytes(columnName: String): RowParser[Array[Byte]] = get[Array[Byte]](columnName)(implicitly[Column[Array[Byte]]])
最後にそれを使用してください:
val images:List[String~Array[Byte]] = {
SQL("select * from Image").as( str("name") ~ bytes("data") * )
}