Anorm을 사용하여 Postgres에서 'Char' 값을 얻는 방법
-
21-12-2019 - |
문제
나는 포스트그레스 테이블을 가지고 있습니다 -
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
제휴하지 않습니다 StackOverflow