我有一些表,其中多个列在Slick中映射到某个case类。我想使用一些可用列的子集作为另一种类型的查询。 示例:
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'来选择NodeRow的实例。但是,如果我只想选择两列来构建'OtherModel'类呢?我知道我可以使用'map'来只选择所需的列,然后映射结果以从元组转换为case类,但我想知道是否有一些本机支持这种用例(包括更新)。 感谢。
答案 0 :(得分:1)
我认为你可以在同一个db表上定义另一个Slick Table,只映射所需的列