Hibernate中的活动记录过滤

Hibernate中的活动记录过滤,hibernate,database-design,Hibernate,Database Design,我有一个遗留数据库,其中70%的表都有“valid\u from”和“valid\u to”列。 这些列表示记录处于“活动”状态,可以在生产时使用。 我们在用于多对多关系的关联表上也有这些列 因为只应该使用活动记录,所以每当调用读取查询时,我们必须过滤活动记录。 我们计划使用一个全局过滤器来实现这一点,该过滤器总是在Hibernate会话中通过AOP建议设置的。这样,调用程序就不必担心设置Hibernate过滤器 我们担心的是: 1) 我们没有为关联表创建单独的类,因此我们担心如何从这些表中筛选

我有一个遗留数据库,其中70%的表都有“valid\u from”和“valid\u to”列。 这些列表示记录处于“活动”状态,可以在生产时使用。 我们在用于多对多关系的关联表上也有这些列

因为只应该使用活动记录,所以每当调用读取查询时,我们必须过滤活动记录。 我们计划使用一个全局过滤器来实现这一点,该过滤器总是在Hibernate会话中通过AOP建议设置的。这样,调用程序就不必担心设置Hibernate过滤器

我们担心的是: 1) 我们没有为关联表创建单独的类,因此我们担心如何从这些表中筛选活动记录。当Hibernate不明确知道这些字段时,是否可以在映射到关联表的筛选器中提及“valid_from”和“valid_to”字段?这样行吗

2) 筛选器不应用于没有有效字段的表。但过滤器总是设置好的。这会带来任何问题吗

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


非常感谢您的帮助

我想在这里发表一些评论。希望它能对你有所帮助


  • AssociationOverride是我知道的实现这一点的唯一方法(它确实需要额外的类)。看看:

  • 我看不出有什么问题

  • 如果您找到了一种方法来创建映射,而无需关联覆盖;然后,您可能需要构建一个常规的JDBC实用程序来更新这些字段


  • 或者,您可以以不同的方式处理此场景。每个实体都会有一个名为“isActive”的@Formula属性,该属性基于“valid\u from”-“valid\u to”列。接下来,您可以使用HQL或条件正确过滤结果


    我希望它能有所帮助。

    对于第2项:这不会产生任何类似“无效列”的问题吗?@user2054927我现在明白你的意思了。是的,这可能是个问题。当然,对于这一点,有一些丑陋且容易出错的变通方法,我不会给出建议。