slick 中相同 table 的多种表示

Multiple representaitons for the same table in slick

我有一些 table 在 Slick 中映射到某些情况 class 的多个列。我想使用可用列的某些子集作为另一种类型的查询。 示例:

case class NodeRow(id: Long, scheduled: Int, current: Option[Int])
case class OtherModel(id: Long, current: Option[Int])
class Node(_tableTag: Tag) extends Table[NodeRow](_tableTag, Some("masterdata"), "node") {
def * = (id, scheduledFirmwareVersion, currentFirmwareVersion) <>(NodeRow.apply, NodeRow.unapply)

val id: Rep[Long] = column[Long]("id", O.AutoInc, O.PrimaryKey)
val scheduledFirmwareVersion: Rep[Int] = column[Int]("scheduled_firmware_version", O.Default(1))
// Note - in this example number of columns is reduced  
val currentFirmwareVersion: Rep[Option[Int]] = column[Option[Int]]("current_firmware_version", O.Default(None)
}
lazy val Node = new TableQuery(tag => new Node(tag))

我可以使用 'Node' 到 select 个 NodeRow 实例。但是如果我只想select两列来构造'OtherModel'class呢?我知道我可以只使用 'map' 到 select 所需的列,然后映射结果以从元组转换为大小写 classes,但我想知道是否有一些本机支持这样的用例(包括更新)。 谢谢

我认为您可以在同一个数据库 table 上定义另一个 Slick Table,仅映射所需的列