【发布时间】:2010-10-11 04:05:15
【问题描述】:
我有一个包含许多表的网络应用程序(每个表都代表一个 POJO)。我为每个类编写了映射文件,然后使用 Hibernate 的SchemaExport 在我的数据库中生成表。现在我想为每个已创建的现有表创建 2 个附加表:
-
用户权限表 - 存储特定于每个字段的 POJO 上的用户权限
POJO中的每一列代表一个字段,每一行代表一个用户,每个单元格将有一个值“读”、“写”等,代表用户对该字段的权限
-
数据历史记录表 - 使用版本号存储所有数据历史记录
此表将包含 POJO 表所具有的所有列,以及 4 个附加字段:数据对象版本、事务 GUID(主键)、数据戳和执行此事务的用户。
我希望能够在创建这些表后通过 Hibernate 访问这些表。这样我就可以轻松地在其中添加/删除/更新条目。
我的问题
附加表上的大多数列将与 POJO 表相同。所以我认为以某种方式引用 POJO 表可能比创建全新的表更好。这样,如果 POJO 表中添加了新字段,这些表将自动进行更改。但我似乎不知道该怎么做。我想也许有一些方法:
- 创建以某种方式引用 POJO 表的休眠映射文件
例如在我的新 POJOPermission.hbm.xml 文件中,以某种方式指定,使用与 POJO 表相同的字段,并添加这些新字段。 - 编写 Java 代码在 Hibernate 中创建表
例如我可以使用 java.lang.Class 向我返回 POJO 中所有字段的列表,然后遍历这些字段,以某种方式将它们设置为我的新表的列标题,然后 以某种方式 在运行时调用 Hibernate 来创建这些表
有人可以告诉我如何执行上述任一操作,或解决此问题吗?我有一种感觉,我可能以错误的方式思考这个......
谢谢!!!
[编辑-解决方案]
我最终使用 XSLT 将原始 hbm.xml 文件转换为新文件,更改字段类型等。并指定 hibernate.cfg.xml 文件以包含新生成的文件。最后只需运行 schemaexport 即可将所有 java 文件一起生成...
【问题讨论】:
-
你为什么不提供你的解决方案作为答案并接受它,这样它就不会挂在“未回答”的问题上?
标签: java database hibernate database-permissions datahistory