Slick: запрос нескольких таблиц / баз данных с получением имен столбцов

В моем приложении Play есть методы, которые запрашивают таблицы базы данных с более чем ста столбцами. Я не могу определить case-класс для каждого такого запроса, потому что он был бы просто смехотворно большим и должен был бы меняться с каждым изменением таблицы в базе данных.

Я использую этот подход, где результат запроса выглядит следующим образом:

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

Пример кода:

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
}

Это не проблема, когда запрос выполняется только для одной базы данных и одной таблицы. Мне нужно иметь возможность использовать несколько таблиц и баз данных в моем запросе, как это:

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

}

Тот же подход больше не может быть использован для получения имен столбцов. Эта проблема не существует при использовании чего-то вроде PHP PDO или Java JDBCTemplate - они получают имена столбцов без каких-либо дополнительных усилий.

Мой вопрос: как мне добиться этого с помощью Slick?

Ответы на вопрос(2)

Ваш ответ на вопрос