2016-11-07 84 views
0

与表定义像这样的:油滑:拿到表名

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

我怎样才能从Test一个实例拿回表名(标签“测试”)?

事情是我可以完美执行一些查询,如db run TableQuery[Test].result,但要写原始的sql,我需要表名。

+1

'myTableQuery.baseTableRow.tableName'? –

+0

@ insan-e是的,谢谢!如果你喜欢,你可以添加它作为答案。 – JulienD

回答

3

如果你看看油滑的TableQuery ScalaDoc有一个叫baseTableRow方法,说:

def baseTableRow: E

获得“原始”表行是表示表本身,而不是 到表的类型变量的路径。这种方法应该不会从用户代码中调用 。

所以你去E <: AbstractTable的 “定义”(AbstractTableScaladoc,找到你需要的东西,即val tableName: String。这里的诀窍是知道在哪里看(可能的隐式转换和其他的东西......),也就是如何浏览Scala(Doc)rabbithole。 xD