Slick:获取 table 名称

Slick: get table name

使用这样的 table 定义:

class Test(_tableTag: Tag) extends Table[TestRow](_tableTag, "test") { ... }

如何从 Test 的实例中取回 table 名称(标记 "test")?

问题是我可以完美地执行某些查询,例如 db run TableQuery[Test].result,但是要编写原始 sql,我需要 table 名称。

如果您查看 Slick 的 TableQuery ScalaDoc,有一个名为 baseTableRow 的方法,它说:

def baseTableRow: E

Get the "raw" table row that represents the table itself, as opposed to a Path for a variable of the table's type. This method should generally not be called from user code.

所以你去 E <: AbstractTable 的 "definition" (AbstractTable) Scaladoc 找到你需要的东西,即 val tableName: String。这里的诀窍是知道在哪里看(可能的隐式转换和其他东西......),即如何导航 Scala(Doc) rabbithole。 xD