我遵循 Balusc 的第一种方法从数据库中定义的字段创建动态表单。我可以获取已发布字段的字段名称和值。但是我对如何将值保存到数据库中感到困惑。
- 我是否应该在创建表单后预先创建一个表来保存值并手动保存值(通过手动形成 SQL 查询)?
- 我应该将名称/值对转换为 JSON 对象并保存吗?
- 我是否应该创建一个带有 id、name、value 字段的简单表并在此处保存名称/值对(如 EAV 方案)?
或者有什么方法可以将发布的值保存到数据库中?问候
我遵循 Balusc 的第一种方法从数据库中定义的字段创建动态表单。我可以获取已发布字段的字段名称和值。但是我对如何将值保存到数据库中感到困惑。
或者有什么方法可以将发布的值保存到数据库中?问候
看起来您正在尝试自下而上而不是自上而下工作。
链接答案中的动态表单旨在在所有现有表中重用,而无需在每个表的“硬编码”Facelets 文件上手动创建单独的 JSF CRUD 表单。您应该已经有一个可用的通用模型,其中包含有关特定数据库表中所有可用列的信息(Field
在链接的答案中)。该信息可以通过 JPA 元数据信息(如何执行这又取决于所使用的 JPA 提供程序)或仅ResultSetMetaData
在应用程序启动期间通过良好的“ol JDBC 类”动态和通用地提取。
如果你真的需要自下而上地工作,那就更棘手了。在运行时创建表/列是一种非常糟糕的设计(当然,除非您打算开发某种数据库管理工具,例如 PhpMyAdmin 左右)。无需创建表/列运行时,您基本上应该有 3 个表:
然后您应该通过 FK 关系将它们链接在一起。