【问题标题】:What is Tag type exactly?标签类型到底是什么?
【发布时间】:2015-01-05 10:43:37
【问题描述】:

我知道我可以在 Slick 中定义一个表格,如下所示:

class MyTable(tag: Tag)

但究竟是什么?

我阅读了文档,上面写着:

标签标记由 AbstractTable 实例表示的特定行。

这对我没有帮助,

  1. 特定行是什么意思?
  2. 它是如何表示的?
  3. 为什么我需要在我的ctor中定义它?
  4. 为什么叫Tag是什么标签?
  5. 我需要在创建Table 类时编写此Tag,但我想了解我为什么编写此代码,而不仅仅是遵循slick,它告诉我这是定义表的方式。李>

【问题讨论】:

  • source 能帮到你吗?
  • 我查看了这个来源,它一直说:“一个标签标记了一个特定的行”为什么? “返回带有此标签的 AbstractTable 的新实例”为什么? “def taggedAs(path: Node): AbstractTable[_]” 为什么要标记它? “代表节点的表实例的标签”好的,那么什么是标签? “抽象类 RefTag(val 路径:节点)扩展标签”所以有一个 ref 标签它是什么? “trait BaseTag extends Tag”另一个标签是什么? “密封特征标签”为什么需要它?
  • 如果你理解“标签”这个词,那么不难理解什么是标签(或者如果你是外国人,请跳转到Google translator)。当你创建一个表时,你给它一个标签,因为 AbstractTable 的每个实例都需要它。当 slick 生成 SQL 时,这些标签可以在我认为的 AST 节点中提供新路径。标记可以表示为 tablemodel 的 id。

标签: slick


【解决方案1】:

您可以将 Tag 视为 SQL 别名。它区分查询中同一表的不同实例。

【讨论】:

  • 谢谢,这增加了我的理解,但为什么我需要注意这一点?如果我根本不更新这个标签参数class Coffees(tag: Tag) extends Table[(String, Double)](tag, "COFFEES") { 那么为什么我需要在我的光滑客户端代码中使用它?我所做的只是将它按原样传递给父母为什么我需要在我的代码中看到它?为什么 slick 代码不仅是内部的?
  • 当你从一个 Table 子类创建一个 TableQuery 时,Slick 会生成一个标签并将其传递进去。现在不确定我们是否可以做不同的事情,但当时似乎有必要。
  • @szeiger 可能对邮件列表有更多了解,他当时添加了它
猜你喜欢
  • 2015-10-10
  • 2010-11-18
  • 2014-03-23
  • 2017-07-26
  • 2011-06-15
  • 2014-06-05
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多