我有一个遗留数据库,其中70%的表都有'valid_from'和'valid_to'列。 这些列表示记录是“活动的”,可以在生产时使用。 我们在关联表上也有这些列,用于多对多关系。
因为只应使用活动记录,所以每当调用读取查询时,我们都必须过滤活动记录。 我们计划使用全局过滤器来执行此操作,该过滤器始终通过AOP建议在Hibernate会话中设置。通过这种方式,调用者永远不必担心设置Hibernate过滤器。
我们担心以下情况: 1)我们没有为关联表创建单独的类,所以我们担心如何从这些表中过滤活动记录。是否可以在过滤器中提及映射到关联表的'valid_from'和'valid_to'字段,而这些字段未被Hibernate明确知道?这有用吗?
2)不应将过滤器用于没有有效字段的表。但总是设置过滤器。这会给出任何问题吗?
3)有效字段由基于网络的“admin-tool”管理。如何在不显式创建“映射类”的情况下更改关联表上的有效字段?我们真的想避免这样的课程!或者也许有更好的方法来处理活动记录?
非常感谢所有帮助!
答案 0 :(得分:0)
我想在这里发表一些评论。希望它能以某种方式帮助你。
我知道实现这一目的的唯一方法(它确实需要额外的类)。请查看:http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/
我没有看到任何问题。
如果你想出一种在没有AssociationOverride的情况下创建映射的方法;那么,您可能需要构建一个常规的JDBC实用程序来更新这些字段。
或者,您可以采用不同的方式处理此方案。每个实体都有一个基于“valid_from” - “valid_to”列的名为“isActive”的@Formula属性。接下来,您可以使用HQL或Criteria正确过滤结果。
我希望它有所帮助。