Postgresからの「char」値をアメリカと入手する方法
-
21-12-2019 - |
質問
Postgresテーブルを持っています -
CREATE TABLE "Contest"
(
id serial NOT NULL,
name varchar(100) NOT NULL,
type char(1) NOT NULL,
status char(1) NOT NULL,
...
)
.
type
とstatus
をプレイ2.x(アノーム)アプリケーションに戻すことを試みています。
val parseContest = {
get[Pk[Int]]("id") ~
get[String]("name") ~
get[Char]("type") ~
get[Char]("status") map {
case id~name~c_type~status =>
Contest(id, name, c_type, status)
}
}
.
とエラーを取得:
could not find implicit value for parameter extractor: anorm.Column[Char]
.
は 'char'のように見えます。
コードで何を変える必要がありますか?get[String]("status")
を使用してからstatus.head
を回避策として使用することは良いことですか?
解決
char
列に暗黙の変換器を書くことができると思います。それはこのようになります:
implicit def columnToChar: Column[Char] = {
Column[Char](transformer = {
(value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case ch: String => Right(ch.head)
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + " to Char for column " + qualified))
}
})
}
.
このコンバータが範囲内にあることを確認してください。
値が文字列になるわけではありませんが、それを確認して対応する修正を行うことができます。
他のヒント
それについてのアノームに最近マージされているPRがあります。 https://github.com/playframework/プレイフレームワーク/プル/ 2189
所属していません StackOverflow