3

I have table definition in 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
}

Is it possible to refer to forSelect when querying for A?

I want to keep the list of field to be selected in one place to be able to push forSelect to trait in future.

4

2 回答 2

4

我相信你可以像这样完成你想要的:

( for( a <- ADB ) yield a.forSelect ).list

这与 stefan.schwetschke 发布的内容之间的区别在于,我使用实例a来引用forSelect而不是从ADB对象本身访问它。

于 2013-06-26T11:09:53.083 回答
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
}
于 2013-06-26T08:14:57.950 回答