0

我想知道是否可以从休眠搜索 ClassBridge 中使用任何 Spring 服务。

抽象的:

我的实体没有我想放入索引文档的所有信息。我也无法通过@IndexedEmbeded获得它。这些数据来自外部数据源,我有服务提供。这仅在重新索引时需要。当索引单个对象保存服务时,在瞬态实体字段中提供此信息。对于重新索引,我使用 MassIndexer。

我的应用程序在 Spring MVC 环境中工作。我使用注释驱动配置。因此,要访问我的服务,我只需要使用 @Autowired 注释,服务就可以使用了。

解决方案?

当使用 Hibernate Search 时,生活并不是那么容易(或者我不知道它是怎么回事)。

为了获得更多信息,我决定使用ClassBridge。我还实现了从我的 spring 服务中调用的简单MassIndexer过程。

在我的 ClassBridge 中,spring 不会自动装配服务。当我尝试快速解决方法并在 ClassBridge 中使用静态字段并从 MassIndexer 调用者传递服务引用时,发生了另一个问题。服务报告异常“无会话”(sessionFactory.getCurrentSession() 抛出异常)...我不知道该往哪里走。

从 ClassBridge 代码中访问 Spring 服务的推荐方法是什么?

如何从 ClassBridge 中获取活动的休眠会话(或 SessionFactory)?

感谢您的时间并希望您的帮助。

4

2 回答 2

0

推荐的方式是通过编译时编织和@Configurable

于 2013-07-02T20:23:54.103 回答
0

此页面上的评论(http://guylabs.ch/2014/02/22/autowiring-pring-beans-in-hibernate-jpa-entity-listeners/)提供了一种更简单的处理方法,可能有用。你可以让 Spring 为你自动装配一个对象,更明确地调用:

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

文档:http ://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/SpringBeanAutowiringSupport.html

于 2015-09-03T04:15:21.380 回答