Playframework 2.0 在slick中跨模型共享公共查询?

Playframework 2.0 在slick中跨模型共享公共查询?,playframework-2.0,slick,Playframework 2.0,Slick,我刚刚开始使用slick,发现自己正在为常见查询编写重复的代码。人们使用了哪些技术来跨模型共享公共查询?例如,在扩展表[SomeOtherType]的MyModel对象中,我可能有如下内容: def all : List[SomeOtherType] = DB.withSession { implicit session : Session => (for(record <- MyModel) yield record).list } def all:List[SomeOt

我刚刚开始使用slick,发现自己正在为常见查询编写重复的代码。人们使用了哪些技术来跨模型共享公共查询?例如,在扩展表[SomeOtherType]的MyModel对象中,我可能有如下内容:

def all : List[SomeOtherType] = DB.withSession { implicit session : Session =>  
  (for(record <- MyModel) yield record).list
}
def all:List[SomeOtherType]=DB.with会话{隐式会话:会话=>

(记录我们在2013年Scala Days的演讲中谈到了这一点

必须定义将查询作为参数的函数(或方法扩展/隐式类)

def all[T, E](q: Query[Any, E]) = db.withSession { implicit session: Session =>
  q.list
}

// usage in Slick 1.0
all(Query(MyModel))

如果您正在考虑将其作为表对象的一个成员,我建议您不要这样做。这将使迁移到2.0变得更容易(在我看来是有意义的)。

您不能只使用类型参数执行一个trait吗?您的所有模型都可以混合这些trait吗?