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