【问题标题】:How to use StaticQuery in Slick 3.0.0?如何在 Slick 3.0.0 中使用 StaticQuery?
【发布时间】:2015-08-31 01:06:15
【问题描述】:

在 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)
    }
}

【问题讨论】:

标签: scala slick slick-3.0 typesafe


【解决方案1】:

我设法找到的唯一解决方案有点老套:

import slick.driver.HsqldbDriver.api._

def fetchResult[T](sql: String) = {
    database.run(sqlu"""#$sql""")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多