Slick 2.1中的以下工作代码返回一个整数(在本例中,该整数恰好是运行一个名为“foobar”的函数的结果):
def getFoobar(): Int = DB.withSession {
val query = Q.queryNA[Int]("select foobar()")
query.first
}一个端口如何才能使3.0变得光滑?根据slick3.0文档,查询必须转换为DBIOAction。所以这就是我尝试过的:
import driver.api._
...
def getFoobar(): Future[Int] = {
val query = sql"select foobar()".as[Int]
db.run(query)
}但这会导致以下编译错误:
[error] found : slick.profile.SqlStreamingAction[Vector[Int],Int,slick.dbio.Effect]#ResultAction [Int,slick.dbio.NoStream,slick.dbio.Effect]
[error] required: MyDAO.this.driver.api.DBIO[Seq[Int]]看来,sql内插器产生的是SqlStreamingAction而不是DBIO,正如db.run所期望的那样。
在新的slick3API中写这个的正确方法是什么?
发布于 2015-06-28 17:40:41
我用了一些类似的东西,对我来说很管用。
import slick.driver.MySQLDriver.api._
def get(id : String) : Future[Channel] = {
implicit val getChannelResult = GetResult(r => Channel(r.<<, r.<<, r.<<, r.<<, r.<<))
val query = sql"select * from Channel where id = $id".as[Channel]
db.run(myq.headOption)
}db.run(DBIOActionT,NoStream,Nothing)命令将接受所有类型的操作,如sqlstreamingaction、StreamingDriverAction、DriverAction等。
我想问题在于驱动程序或db配置。所以这个错误
[error] required: MyDAO.this.driver.api.DBIO[Seq[Int]]您能直接粘贴驱动程序和db配置步骤吗?这样我们就可以更深入地了解代码以确定实际的错误步骤。
https://stackoverflow.com/questions/30718671
复制相似问题