У меня есть этот код в 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) не удалось найти неявное значение для параметра session: scala.slick.jdbc.JdbcBackend#SessionDef doWithConn(conn, tasks.insert(task)) ^
Я не знаю, как передать session
из метода insertTask
. Как я могу передать его и исправить эту ошибку компиляции?
Спасибо
Error:(32, 59) not found: value task val insertTaskInternal : Session => Unit = tasks.insert(task) ^
. (он не может найти вставку метода для задач) он отлично работает, когда он инкапсулирован вconn.dbObject withSession { implicit session: Session =>
17.12.2014yourBlock
, я пробовал это так (в случае, если ваш блок - это схема удаления)val deleteSchemeFunc: (Session => Unit) = { s: Session => tasks.ddl.drop }
, но я получаю ошибку компиляции:Error:(49, 71) could not find implicit value for parameter session: scala.slick.jdbc.JdbcBackend#SessionDef val deleteSchemeFunc: (Session => Unit) = { s: Session => tasks.ddl.drop }
^ 18.12.2014val deleteSchemeFunc: (Session => Unit) = { session: Session => tasks.ddl.drop(session) }
18.12.2014val deleteSchemeFunc = tasks.ddl.drop(_)
18.12.2014