加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用Slick(Scala),有没有办法在运行中向表中添加列?

发布时间:2020-12-16 09:06:04 所属栏目:安全 来源:网络整理
导读:我想编写我的 Scala Slick应用程序,以便用户可以在不必修改源代码的情况下为表配置其他列.有没有办法做到这一点? 亚当S – 是的,这就是我的想法.该程序将带有一个默认配置文件,最终用户/管理员可以选择将新列添加到某些表中,当程序启动时,它将添加这些列.
我想编写我的 Scala Slick应用程序,以便用户可以在不必修改源代码的情况下为表配置其他列.有没有办法做到这一点?

亚当S – 是的,这就是我的想法.该程序将带有一个默认配置文件,最终用户/管理员可以选择将新列添加到某些表中,当程序启动时,它将添加这些列.

我还有其他一些考虑的方法,例如使用用户将配置的备用列配置初始表(但这会限制备件数量并预先定义类型).另一种方法是定义第二个表与原始主键具有相同的主键,并使其仅包含用户定义的数据,然后程序必须处理维护两个表(每个表具有相同的数量)行),这将允许更传统地处理原始默认表.这两个表可能与数据库函数保持同步(这将使其特定于数据库).

解决方法

是的,这是可能的.将列定义为表定义的一部分时,可以通过调用Table对象的“列”方法来完成.你可以从外面做同样的事情,例如:

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

type参数确定要用于列的正确隐式ColumnType.您还可以动态获取ColumnType并显式提供该参数.

请注意,不要求表的*投影包含所有列.如果要为动态发现的列生成DDL,可以在create_ *返回的Seq中包含这些列.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读