2013-05-03 78 views
3

我想編寫我的Scala + Slick應用程序,以便用戶可以將其他列配置到表中而無需修改源代碼。有沒有辦法做到這一點?使用Slick(Scala),有沒有辦法將一列添加到表中?

Adam S - 是的,那正是我想到的。該程序將帶有一個默認配置文件,最終用戶/管理員可以選擇向某些表中添加新列,並且在程序啓動時會添加這些列。

還有其他一些我想要去的方法,比如用用戶配置的備用列來配置初始表(但是會受限於備用數量和預定義類型)。另一種方法是定義第二個表,它具有與原始主鍵相同的主鍵,並且只包含用戶定義的數據,然後程序必須處理維護兩個表(每個表具有相同數量的行),這將允許更傳統地處理原始默認表。這兩個表可能與數據庫功能保持同步(這會使其與數據庫相關)。

+0

這個問題很含糊。就我而言:您能否在建立表格時將表格信息寫入外部文件並評估該文件? – Appleshell 2013-05-04 01:06:16

回答

7

是的,這是可能的。當您將列定義爲表定義的一部分時,通過調用Table對象的'列'方法來完成。您可以從外部執行相同的操作,例如:

for { 
    a <- TableA 
    b <- TableB if a.id === b.column[String]("dynamic1") 
} yield b.column[Int]("dynamic2") 

type參數確定用於該列的正確的隱式ColumnType。您也可以動態獲取ColumnType並顯式提供該參數。

請注意,表格的*投影不需要包含所有列。如果要爲動態發現的列生成DDL,可以將這些列包含在create_ *返回的Seq中。

+0

優秀! Profuse感謝和讚美。 – user1062589 2013-05-06 13:39:20

相關問題