質問

Postgresテーブルを持っています -

CREATE TABLE "Contest"
(
  id serial NOT NULL,
  name varchar(100) NOT NULL,
  type char(1) NOT NULL,
  status char(1) NOT NULL,
  ...
)
.

typestatusをプレイ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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top