使用 Spring JPA 和 Hibernate 访问 Session 以启用过滤器

2024-04-07

在 Spring JPA + Hibernate 环境中,我需要启用 Hibernate 实体过滤器。 所以我应该有权访问 Hibernate Session 对象,但我正在使用 EntityManagerFactory 和 Spring JPA 魔法。 有没有 Session 拦截器,所以每次 Spring 创建一个新 Session 时我都可以调用它的 enableFilters() 方法?


我最终得到了 AOP 解决方案:

@Aspect
@Component
public class EnableFilterAspect {

    @AfterReturning(
            pointcut="bean(entityManagerFactory) && execution(* createEntityManager(..))",
            returning="retVal")
    public void getSessionAfter(JoinPoint joinPoint, Object retVal) {
        if (retVal != null && EntityManager.class.isInstance(retVal)) {
            Session session = ((EntityManager) retVal).unwrap(Session.class);
            session.enableFilter("myFilter").setParameter("myParameter", "myValue");
        }
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring JPA 和 Hibernate 访问 Session 以启用过滤器 的相关文章

随机推荐