我有一个有很多表的网络应用程序(每个表代表一个 POJO)。我为每个类编写了映射文件,然后使用 HibernateSchemaExport
在我的数据库中生成表。现在我想为每个已创建的现有表创建 2 个附加表:
- 用户权限表- 存储用户对 POJO 的权限,特定于每个字段
,每一列代表 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 文件...