在 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(使用前将#替换为@)