2013-05-03 50 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

相关问题