Hibernate中的活动记录过滤

时间:2013-08-11 10:47:43

标签: hibernate database-design

我有一个遗留数据库,其中70%的表都有'valid_from'和'valid_to'列。 这些列表示记录是“活动的”,可以在生产时使用。 我们在关联表上也有这些列,用于多对多关系。

因为只应使用活动记录,所以每当调用读取查询时,我们都必须过滤活动记录。 我们计划使用全局过滤器来执行此操作,该过滤器始终通过AOP建议在Hibernate会话中设置。通过这种方式,调用者永远不必担心设置Hibernate过滤器。

我们担心以下情况: 1)我们没有为关联表创建单独的类,所以我们担心如何从这些表中过滤活动记录。是否可以在过滤器中提及映射到关联表的'valid_from'和'valid_to'字段,而这些字段未被Hibernate明确知道?这有用吗?

2)不应将过滤器用于没有有效字段的表。但总是设置过滤器。这会给出任何问题吗?

3)有效字段由基于网络的“admin-tool”管理。如何在不显式创建“映射类”的情况下更改关联表上的有效字段?我们真的想避免这样的课程!或者也许有更好的方法来处理活动记录?

非常感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

我想在这里发表一些评论。希望它能以某种方式帮助你。


  1. 我知道实现这一目的的唯一方法(它确实需要额外的类)。请查看:http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/

  2. 我没有看到任何问题。

  3. 如果你想出一种在没有AssociationOverride的情况下创建映射的方法;那么,您可能需要构建一个常规的JDBC实用程序来更新这些字段。


  4. 或者,您可以采用不同的方式处理此方案。每个实体都有一个基于“valid_from” - “valid_to”列的名为“isActive”的@Formula属性。接下来,您可以使用HQL或Criteria正确过滤结果。

    我希望它有所帮助。