Scala Slick 表标签

Posted

技术标签:

【中文标题】Scala Slick 表标签【英文标题】:Scala Slick table tag 【发布时间】:2015-10-29 06:12:12 【问题描述】:

slick table中有一个tag参数:

class Companies(tag: Tag) extends Table[Company](tag,"COMPANY") ...

它是干什么用的,有什么办法不和每个表类定义一起写吗?

【问题讨论】:

检查这个问题:***.com/questions/20599438/… thwiegan:我看到了这个问题,但它没有回答作为一个 Slick 库用户我需要标签做什么。我知道他们确实在 Slick 内部使用它,但看起来 Slick 库之外的用户没有使用它。如果是这样,那为什么我的代码中需要该样板文件? 我也看不出有任何方法可以在每次定义表类时不使用类型标记样板,无论是子类化还是任何类型的包装,甚至 def 宏都无济于事。我想也许有人碰巧知道路…… 我曾尝试花一些时间查看源代码,但如果没有在任何地方都没有描述的 Slick 内部架构的大图视图,就很难解析。标记本身根本没有记录。如果 Slick 团队可以发布一些带有内部架构描述的文档,至少是高级别的文档,那就太好了。这将帮助我们这些图书馆用户更好地使用它。 在挖掘 3.2.1 版本的源代码后,我得出结论,这是一个泄露的内部抽象(这并不奇怪):Slick 使用一些内部 AST 构建查询。 AST 有节点,标签是它们的元数据,允许 AST 区分它们中的哪些是例如直接表查询,它适用于一些预测/子​​查询/狂野的东西。但是,出于某种原因,这些元数据并没有被阻止向所有编写 Slick 的人公开,尽管它本应如此。 【参考方案1】:

我见过的最佳答案是:https://***.com/a/27783730/154248

它的用途:假设您需要自己加入一个表。该标签是一种区分参与查询的表的方法。

【讨论】:

【参考方案2】:

Tag 提供类型的 AbstractTable 定义,并由 Slicks 内部传递。

【讨论】:

以上是关于Scala Slick 表标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 Play with Scala 和 Slick 在不同文件上的表之间建立一对多关系

如何在 react-slick 中将类添加到 li 标签

Scala + Play Framework + Slick - Json 作为模型字段

scala slick mysql 字段过多 tuple问题

插入具有自动增量 id 的行 - Playframework Scala - Slick

浅谈Slick- 基本功能描述