2016-11-07 26 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