2

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

因为只应使用活动记录,所以我们必须在调用读取查询时过滤活动记录。我们计划通过 AOP Advice 始终在 Hibernate Session 中设置一个全局过滤器来做到这一点。这样,调用者就不必担心设置 Hibernate 过滤器。

我们担心以下问题: 1) 我们没有为关联表创建单独的类,因此我们担心如何从此类表中过滤活动记录。是否可以仅提及映射到关联表的过滤器中的“valid_from”和“valid_to”字段,而这些字段并未被 Hibernate 明确知道?这行得通吗?

2) 过滤器不应用于没有有效字段的表。但始终设置过滤器。这会带来任何问题吗?

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

非常感谢所有帮助!

4

1 回答 1

0

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


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

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

  3. 如果您想出一种无需 AssociationOverride 即可创建映射的方法;然后,您可能需要构建一个常规的 JDBC 实用程序来更新这些字段。


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

我希望它有所帮助。

于 2013-08-11T12:51:44.740 回答