1

我遵循 Balusc 的第一种方法从数据库中定义的字段创建动态表单。我可以获取已发布字段的字段名称和值。但是我对如何将值保存到数据库中感到困惑。

  • 我是否应该在创建表单后预先创建一个表来保存值并手动保存值(通过手动形成 SQL 查询)?
  • 我应该将名称/值对转换为 JSON 对象并保存吗?
  • 我是否应该创建一个带有 id、name、value 字段的简单表并在此处保存名称/值对(如 EAV 方案)?

或者有什么方法可以将发布的值保存到数据库中?问候

4

1 回答 1

2

看起来您正在尝试自下而上而不是自上而下工作。

链接答案中的动态表单旨在在所有现有表中重用,而无需在每个表的“硬编码”Facelets 文件上手动创建单独的 JSF CRUD 表单。您应该已经有一个可用的通用模型,其中包含有关特定数据库表中所有可用列的信息(Field在链接的答案中)。该信息可以通过 JPA 元数据信息(如何执行这又取决于所使用的 JPA 提供程序)或仅ResultSetMetaData在应用程序启动期间通过良好的“ol JDBC 类”动态和通用地提取。

如果你真的需要自下而上地工作,那就更棘手了。在运行时创建表/列是一种非常糟糕的设计(当然,除非您打算开发某种数据库管理工具,例如 PhpMyAdmin 左右)。无需创建表/列运行时,您基本上应该有 3 个表:

  • 1 个表,其中包含有关哪些“虚拟”数据库表都可用的信息。
  • 1 个表,其中包含一个此类“虚拟”数据库表具有哪些列的信息。
  • 1 个表,其中包含一个此类列具有的值的信息。

然后您应该通过 FK 关系将它们链接在一起。

于 2012-11-16T11:41:03.820 回答