我在Slick中有表定义:
object ADB {
extends BaseDB[A]("a")
with PostgresDriver{
def id = column[Long]("id", O.PrimaryKey)
def name = column[String]("name")
...
def * = id ~ name ~ ... <> (A.apply _, A.unapply _)
def forSelect = id ~ name
}
查询forSelect
时是否可以引用A
?
我希望在一个地方保留要选择的字段列表,以便将来forSelect
推送到特质。
答案 0 :(得分:4)
我相信你可以像这样完成你想要的东西:
( for( a <- ADB ) yield a.forSelect ).list
这与stefan.schwetschke发布的内容之间的区别在于我使用实例a
来引用forSelect
而不是从ADB
对象本身访问它。
答案 1 :(得分:0)
试试
...map(ADB.forSelect)
或
for( ... ) yield ADB.forSelect
以下对我有用:
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession
object ADB extends Table[(Long, String)]("a") {
def id = column[Long]("id", O.PrimaryKey)
def name = column[String]("name")
def * = id ~ name
def forSelect = id ~ name
}
Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver") withSession {
( for( a <- ADB ) yield ADB.forSelect ).list
}