gpt4 book ai didi

scala - Slick - 创建投影中不存在的列

转载 作者:行者123 更新时间:2023-12-05 01:15:19 24 4
gpt4 key购买 nike

当使用 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 创建时间戳列?

我们是否以错误的方式处理这个问题?我们绝对不希望 ts 出现在 CacheEntry 中(在这种情况下我们可以接受它,但我们有更复杂的情况,这是不可取的)

最佳答案

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

关于scala - Slick - 创建投影中不存在的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33168535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com