2015-10-16 30 views
2

使用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) 
} 

我们怎样才能说服油滑创建timstamp专栏与TableQuery[CacheTable].ddl.create

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

回答

0

您可以定义类似case class TimestampedEE](entry: E, timestamp: LocalDateTime)的东西,并更改您的CacheTableTable[Timestamped[CacheEntry]]def *投影可能会看起来很丑陋(如果不依靠一些无形的魔法),但这是一种方法。