문제

나는 포스트그레스 테이블을 가지고 있습니다 -

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

필드 값을 얻으려고 합니다. type 그리고 status 내 Play 2.x(Anorm) 애플리케이션으로 돌아갑니다.

 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'는 anorm에서 지원되지 않는 것 같습니다.내 코드에서 무엇을 변경해야 합니까?사용하는 것이 좋은 습관인가요? 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))
        }
    })
  }

그런 다음 이 변환기가 범위 내에 있는지 확인하십시오.

값이 문자열인지는 확실하지 않지만 이를 확인하고 그에 따라 수정할 수 있습니다.

다른 팁

최근 Anorm에 이에 대한 병합된 PR이 있습니다. https://github.com/playframework/playframework/pull/2189

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top