0
저는 스칼라 Anorm을 프로젝트에 사용하고 사례 클래스에 대한 파서를 작성하고 싶습니다. 그런 다음이 파서를 다른 쿼리 (일반적으로 JOIN
을 추가 할 때)에 다시 사용합니다.Anorm RowParser [A]를 RowParser [Option [A]]로 변환하는 방법
때로는 선택적 값 (예 : 인 LEFT JOIN
)이 필요합니다. 같은 파서를 재사용 할 수 있다면 얼마나 편리할까요? 다음 파서
case class Specialty(
id: Long,
name: String
)
:
def parser(table: String): RowParser[Specialty] = {
get[Long]("id") ~ get[String](table + ".name") map {
case id ~ name => Specialty(id, name)
}
}
가 어떻게 parser:RowParser[OptionSpecialty]]
에 parser:RowParser[Specialty]
를 설정할 수 있습니다 예를 들어, 나는 다음과 같은 경우 클래스가 말한대로
이렇게하면 테이블 전문이 LEFT JOIN
을 통해 추가 된 쿼리에서이 정보를 사용할 수 있습니다. 정보의 추가 조각으로
def parserOptional(table: String):RowParser[Option[Specialty]] = {
get[Option[Long]]("id") ~ get[Option[String]](table + ".name") map {
case oid ~ oname => oid.flatMap{id =>
oname.map{name =>
Specialty(id, name)
}
}
}
}
"을 찾은 것 같아요 작동하지 않는 것 같아요. "라는 말은 정확하지는 않습니다 (반면 '.?'조합은 테스트의 대상이됩니다) – cchantep