2013-06-21 2 views
9

나는 Slick documentation example for autoincrementing fields을 따르고 있으며 mapped projection을 만드는 데 문제가 있습니다 ... 글쎄, 하나의 열만 있습니다.Slick에서 한 개의 열만 스칼라로 투영합니다.

case class UserRole(id: Option[Int], role: String) 

object UserRoles extends Table[UserRole]("userRole") { 
    def id = column[Int]("ID", O.PrimaryKey, O.AutoInc) 
    def role = column[String]("ROLE") 
    // ... 
    def * = id.? ~ role <> (UserRole, UserRole.unapply _) 
     // NEXT LINE ERRORS OUT 
    def forInsert = role <> ({t => UserRole(None, t._1)}, {(r: UserRole) => Some((r.role))}) returning id 
} 

는 오류가

가 나 또한 그렇게처럼 내 스키마를 설계하는 것이 더 효율적이 될 거라고 생각했다 "값 <>이 scala.slick.lifted.Column [문자열]의 멤버가 아닙니다"입니다 :

case class UserRole(role: String) 

object UserRoles extends Table[UserRole]("userRole") { 
    def role = column[Int]("ROLE", O.PrimaryKey) 
    // ... 
    def * = role <> (UserRole, UserRole.unapply _) 

} 

하지만 위와 같은 오류가 발생하기 시작합니다. "<>은 scala.slick.lifted.Column의 멤버가 아닙니다. [0127] 단 하나의 열만 있기 때문에 더 이상 projection이 없습니까? 그렇다면 무엇을 해야합니까 내가하고 있을까요?

답변

7

이것은 Slick의 알려진 문제입니다. 매핑 된 투영법은 단일 열과 함께 작동하지 않습니다. https://github.com/slick/slick/issues/40

다행히도 코드가 작동하려면 매핑 된 투영이 필요하지 않습니다. 그냥 <>을 포함하여 모든 것을 생략하십시오. 투영에 대한 자세한 설명은 scala slick method I can not understand so far을 참조하십시오. 여기에는 필요한 정보가 포함되어 있습니다.

관련 문제