【发布时间】:2014-02-17 00:56:45
【问题描述】:
这基本上是 earlier question 的重复,但对于 Slick-2,适用于 v.1 的答案不再适用。
简而言之,Slick 文档建议做这样的事情
package models
import scala.slick.driver.H2Driver.simple._
class Pictures(tag: Tag) extends Table[(Int, String, String)](tag, "Pictures") {
def id = column[Int]("id", O.PrimaryKey)
def urlThumb = column[String]("urlThumb", O.NotNull)
def urlLarge = column[String]("urlLarge", O.NotNull)
def * = (id, urlThumb, urlLarge)
}
这是将代码直接绑定到 H2Driver。我希望它与驱动程序无关,即与任何 JdbcProfile 驱动程序一起工作。我发现这样做的唯一方法是将驱动程序传递给 DAO 类
class SlickDAO(val driver: JdbcProfile) {
import driver.simple._
问题在于,如果我想定义一些具有共享行为的特征,例如CRUDSupport,我不能对 trait 有论据,我只能做一个抽象类。所以我很好奇用 Slick-2 编写 DAL 的推荐方式是什么?我确定这是 Cake 模式,但我在 Scala 中还不够先进,无法实现它。
【问题讨论】: