Как использовать StaticQuery в Slick 3.0.0?

В Slick 2.1 у меня был код ниже, чтобы выполнить sql-запрос из файла:

def fetchResult[T](sql: String)(implicit getResult: GetResult[T]): List[T] = {
    val query = Q.queryNA[T](sql)
    try {
        Database.forDataSource(DB.getDataSource())
            .withSession { implicit session => query.list }
    }
    catch {
      case e: Throwable =>
        throw new RunSqlException(s"Query $name execution error", e)
    }
}

В Slick 3.0.0 вы используете метод dbConfig.db.run для выполнения DBIOAction и получения будущего результата. Но я не могу найти способ преобразовать результат Q.queryNA (который StaticQuery[Unit, R]) в DBIOAction, Существует ли такой способ?

Я закончил с устаревшими звонками на данный момент. Помоги мне стать лучше!

def fetchResult[T](sql: String)(implicit getResult: GetResult[T]): Future[List[T]] = Future {
    val query = Q.queryNA[T](sql)
    try {
        this.dbConfig.db.withSession { implicit session => query.list }
    }
    catch {
      case e: Throwable =>
        throw new RunSqlException(s"Query $name execution error", e)
    }
}

1 ответ

Единственное решение, которое мне удалось найти, было немного хакерским:

import slick.driver.HsqldbDriver.api._

def fetchResult[T](sql: String) = {
    database.run(sqlu"""#$sql""")
}
Другие вопросы по тегам