光滑 - 创建投影中不存在的列

时间:2015-10-16 10:43:17

标签: scala slick slick-2.0

使用tableQuery.ddl.create时,它只会在投影中创建列。但是在我们的用例中,有些列仅用于过滤和/或排序,因此它们不是投影的一部分,但需要创建它们:

case class CacheEntry(source: String, destination: String, hops: Int)

class CacheTable(tag: Tag) extends Table[CacheEntry](tag, "cache") {

  def source        = column[String]("source")
  def destination   = column[String]("dest")
  def hops          = column[Int]("hops")
  def timestamp     = column[LocalDateTime]("ts", O.DBType("timestamp default now"))

  def * = (source, destination, hops) <> ((CacheEntry.apply _).tupled, CacheEntry.unapply)
}

我们如何说服Slick使用TableQuery[CacheTable].ddl.create创建timstamp列?

我们是以错误的方式接近这个吗?我们肯定不希望ts出现在CacheEntry中(在这种情况下我们可以忍受它,但是我们有更复杂的情况,这是不可取的)

1 个答案:

答案 0 :(得分:0)

您可以定义case class TimestampedEE](entry: E, timestamp: LocalDateTime)之类的内容,并将CacheTable更改为Table[Timestamped[CacheEntry]]def *预测可能看起来很难看(如果不依赖于某些无形的魔法),但这是一种方法。