我正在用 play-slick 做一些简单的测试。我第一次用DB.withSession {implicit s:Session => ...}
在Global.scala
,效果很好。然后我尝试DBAction{}
在我的控制器中使用,事情开始分崩离析。
package controllers
import play.api.mvc._
import play.api.db.slick._
import play.api.Play.current
import models._
object Main extends Controller {
def index = DBAction { implicit s =>
Articles.insert(Article(None,"title1", "hellothere", Some(timeStamp), Some(timeStamp), None))
Ok(views.html.index.render("OK, It works"))
}
}
模型看起来像这样(我跳过了DAO
特征、案例类和蛋糕模式):
object Articles extends DAO {
/* Insert a new Article */
def insert(article: Article)(implicit s: Session) {
Articles.insert(article)
}
}
我试图运行这个程序,我得到的只是永远的服务器挂起状态。其他一切正常,我Global.scala
正确创建了所有表,如果我删除该Articles.insert()
子句,我会得到我的视图页面。所以我想说这部分一定有问题:DBAction { implicit s=> ...}
. 我不知何故觉得 DBAction 找不到隐式会话,它一直在寻找……这导致了这个永远挂起的响应。
好吧,我搜索了它,但仍然不知道该怎么做。有谁知道这里出了什么问题,我应该如何解决?