【发布时间】:2014-12-17 22:44:10
【问题描述】:
我在scala 中有这段代码,使用slick
def insertTask(task: Task) = {
conn.dbObject withSession { implicit session: Session =>
tasks.insert(task)
}
}
它看起来工作:)
现在我还要有 readTask 的代码,我不想复制 withSession { implicit... 的代码
所以我想到了这样做:
def doWithConn(dbConn: DBConnection, doThisCodeBlock: => Unit)(implicit session: Session) = {
dbConn.dbObject withSession { implicit session: Session =>
doThisCodeBlock
}
}
现在我的代码看起来像
def insertTask(task: Task) = {
doWithConn(conn, tasks.insert(task)) // here i get the following complication error
}
但是我得到以下编译错误:
错误:(36, 34) 找不到参数会话的隐式值:scala.slick.jdbc.JdbcBackend#SessionDef doWithConn(conn, tasks.insert(task)) ^
我不确定如何从insertTask 方法传递session。我怎样才能通过它并修复这个编译错误?
谢谢
【问题讨论】:
-
在您的
doWithConn方法中,您无需传入Session,而是将其创建到方法主体中。 -
@EndeNeu 我想我不明白(我删除了
(implicit session: Session)我仍然得到相同的编译错误,但不确定这是你的意思..)