如何在 Spring 应用程序中始终启用我的 Hibernate 过滤器?

问题描述 投票:0回答:3

拥有一个基于 Hibernate (3.5)/Spring (3.0)/BlazeDS/Flex 堆栈的应用程序,我需要为我的一些域类应用过滤器,如下所示。

@FilterDef(name="notDeletedFilter")
@Filter(name="notDeletedFilter", condition="deleted=0")
public class Item {
   private boolean deleted;
  //setter and getter
}

这些过滤器应该始终应用在我的应用程序中。 但是,根据 hibernate 文档,默认情况下,不会为给定的 hibernate 会话启用过滤器。

所以我的问题非常简单:我如何为所有 Hibernate 会话启用上面定义的所有 Hibernate 过滤器?是否有在 spring xml 配置文件中配置我的 Hibernate Session 工厂以应用这些过滤器?

java hibernate spring hibernate-filters
3个回答
2
投票

如果您使用Spring的HibernateTemplate,一种解决方案是扩展它并重写enableFilters方法。 在其中显式启用您需要的过滤器。


0
投票

您可以使用AOP(面向方面编程)来配置过滤器。


0
投票

从 Hibernate 6.5 开始,

autoEnabled
上的
@FilterDef
参数可以设置为 true,默认情况下会对每个会话启用过滤。请参阅文档

此外,对于春季,可以使用

JpaVendorAdapter.postProcessEntityManager
setEntityManagerInitializer(Consumer<EntityManager>)
以及
JpaTransactionManager
上的
LocalContainerEntityManagerFactoryBean
方法。请参阅本期了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.