加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在Slick 3.0.0中使用StaticQuery?

发布时间:2020-12-16 08:56:47 所属栏目:安全 来源:网络整理
导读:在Slick 2.1中,我有以下代码从文件执行sql-query: 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 =
在Slick 2.1中,我有以下代码从文件执行sql-query:

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

解决方法

只有我设法找到的解决方案有点hackish:

import slick.driver.HsqldbDriver.api._

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读