Slick: przeszukuj wiele tabel / baz danych, pobierając nazwy kolumn

Mam w mojej aplikacji Play metody, które sprawdzają tabele bazy danych z ponad stu kolumnami. Nie mogę zdefiniować klasy przypadku dla każdego takiego zapytania, ponieważ byłoby to po prostu śmiesznie duże i musiałoby zostać zmienione przy każdej zmianie tabeli w bazie danych.

Korzystam z tego podejścia, gdzie wynik zapytania wygląda tak:

Map(columnName1 -> columnVal1, columnName2 -> columnVal2, ...)

Przykład kodu:

implicit val getListStringResult = GetResult[List[Any]] (
    r => (1 to r.numColumns).map(_ => r.nextObject).toList
)

def getSomething(): Map[String, Any] = DB.withSession {
    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "myTable").head.getColumns.list.map(_.column) 
    val result = sql"""SELECT * FROM myTable LIMIT 1""".as[List[Any]].firstOption.map(columns zip _ toMap).get
}

Nie jest to problem, gdy zapytanie działa tylko na jednej bazie danych i pojedynczej tabeli. W moim zapytaniu muszę mieć możliwość używania wielu tabel i baz danych:

def getSomething(): Map[String, Any] = DB.withSession {

    //The line below is no longer valid because of multiple tables/databases
    val columns = MTable.getTables(None, None, None, None).list.filter(_.name.name == "table1").head.getColumns.list.map(_.column) 
    val result = sql"""
        SELECT      * 
        FROM        db1.table1
        LEFT JOIN   db2.table2 ON db2.table2.col1 = db1.table1.col1
        LIMIT       1
    """.as[List[Any]].firstOption.map(columns zip _ toMap).get

}

Tego samego podejścia nie można już używać do pobierania nazw kolumn. Ten problem nie występuje, gdy używa się czegoś takiego jak PHP PDO lub Java JDBCTemplate - te pobierają nazwy kolumn bez dodatkowego wysiłku.

Moje pytanie brzmi: jak to osiągnąć za pomocą Slicka?

questionAnswers(2)

yourAnswerToTheQuestion