当前位置: 首页 > 知识库问答 >
问题:

使用JPA EntityManagerFactory和Spring的Hibernate过滤器

班景龙
2023-03-14
@Override
protected EntityManager createEntityManagerForTransaction() {
    EntityManager manager = super.createEntityManagerForTransaction();

    Session session = manager.unwrap(Session.class);

    return manager;
}

但我不确定这个方法是在正确的地方调用的。

编辑:我正在使用spring JpaRepositories来持久化/查询实体。

共有1个答案

曹德明
2023-03-14

我找到了这个问题的答案。好像其他人还在纠结这个问题,我会贴出我的解决方案。

我正在启用在标记为@Transactional(这很重要)的业务服务方法中所需的筛选器。

在您的服务中,注入实体管理器工厂:

 @Autowired
 private EntityManagerFactory entityManagerFactory;
    //Obtain the entity manager for the current transaction
    EntityManagerHolder holder = (EntityManagerHolder) TransactionSynchronizationManager.getResource(entityManagerFactory);
    EntityManager entityManager = holder.getEntityManager();

    //Unwrap to get the underlying hibernate session
    Session hibernateSession = entityManager.unwrap(Session.class);

    //Configure your filters
    Filter publishedAfterFilter = hibernateSession.enableFilter("...");
    publishedAfterFilter.setParameter("...", ...);
    publishedAfterFilter.validate();
 类似资料:
  • 问题内容: 在Spring JPA + Hibernate环境中,我需要启用Hibernate实体过滤器。因此,我应该可以访问Hibernate Session对象,但是我正在使用EntityManagerFactory和Spring JPA魔术。有任何会话拦截器,因此每当Spring创建一个新的会话时,我都可以在其上调用enableFilters()方法吗? 问题答案: 我最终得到了AOP解决方

  • 问题内容: 我想知道如何使用Spring Security通过用户的IP过滤用户对我的Web应用程序的访问。我应该以自己的方式扩展或类似的东西并覆盖它的方法吗?如果是这样,您能否在中给出这样的扩展示例和过滤器描述示例?提前致谢。 PS在我的应用程序中,我还具有Spring Security支持(使用default ),但是我希望它不仅检查用户凭据,而且还要检查其IP。 问题答案: 做到这一点的一种

  • Hibernate3 新增了对某个类或者集合使用预先定义的过滤器条件(filter criteria)的功能。过滤器条件相当于定义一个 非常类似于类和各种集合上的“where”属性的约束子句,但是过滤器条件可以带参数。 应用程序可以在运行时决定是否启用给定的过滤器,以及使用什么样的参数值。过滤器的用法很像数据库视图,只不过是在应用程序中确定使用什么样的参数的。 要使用过滤器,必须首先在相应的映射节

  • 问题内容: 我有一个使用spring-data-jpa进行数据访问的spring-mvc项目。我有一个域对象,我希望允许最终用户对其应用一些过滤器。 为此,我实现了以下控制器: 效果很好:用户有一个带有输入框的表单,可用于过滤旅行记录。 除了lastName之外,我的域对象还具有许多我想用来过滤的属性。我认为如果这些属性都是字符串,那么我可以将它们添加为s,并添加spring-data-jpa方法

  • 我有一个带有搜索表单(带有姓名字段)和人员表的网页。当用户插入姓名和姓氏,我必须显示姓名、姓氏的人。当用户只插入姓名时,我必须只按姓名过滤,当用户只输入姓氏时也是如此。 控制器中的我的方法如下所示: 我写了一类: 现在,如果我有名字和姓氏,我的搜索就可以了。问题是在网络表单中,名字或姓氏没有值。 在这种情况下,最佳做法是什么?

  • 免责声明:我的问题有点类似于这个问题和这个问题,但我已经尝试了这些帖子中建议的所有答案,并且已经花了几天时间来解决这个问题。 我在我现有的应用程序(JSP,仅限Servlet)中引入了Spring Security 3.2.6,并且我正在使用Java配置。我的应用程序将被浏览器和非浏览器客户端使用。我希望所有浏览器对网址的请求(即<代码>/网页/webVersion/和<代码>/网页/webVer