0

Slick のプレーン SQL を使用してかなり基本的なクエリを実行するこのメソッドがあるとします。

object Data {

    case class User(user: String, password: String)

    implicit val getUserResult = GetResult(r => User(r.<<, r.<<))

    def getUser(user: String, password: String): Option[User] = DB.withSession {
        sql"""
            SELECT  "user", 
                    "password" 
            FROM    "user" 
            WHERE   "user" = $user AND 
                    "password" = $password
        """.as[User].firstOption
    }

}

100 列を超える同じテーブルから別のクエリがある場合はどうなりますか。

SELECT * FROM "user"

この場合、次の 2 行に関して非常に多くの入力が必要になります。

case class User(user: String, password: String, something: Int, ...)
implicit val getUserResult = GetResult(r => User(r.<<, r.<<, r.<<, ...))

100 列を手動でマッピングせずに、これらの 2 行を自動化することはできますか? 自動推論タイプ、またはすべての列が文字列タイプとして返​​される場合でも、良い代替手段になります。

詳細が必要な場合、私のスタックは Play Framework 2.2.1、Scala 2.10.3、Java 8 64Bit、PostgreSQL 9.3 です。

4

1 に答える 1