Spring bean中的hibernate.search.default.directory_provider而不是persistence.xml

时间:2012-12-18 10:25:55

标签: spring hibernate lucene hibernate-search compass-lucene


我处境相当恶劣。我们使用罗盘来实现与Lucene的Hibernate搜索集成,并实现了数据库目录搜索(使用 JdbcDirectory )而不是FSDirectoryProvider,RAMDirectoryProvider等。

问题是目录提供程序是作为META-INF / persistence.xml中的属性传递的,如下所示:

<property name="hibernate.search.default.directory_provider" value="uk.company.package.JdbcDirectoryProvider" />

我们需要将数据库详细信息传递给JdbcDirectoryProvider,因为 JdbcDirectory 需要传递数据源。

我们正在使用属性文件(在类路径中)以非常规方式构建数据源(对于目录提供程序)以及数据库和索引详细信息。

如果我们将 uk.company.JdbcDirectoryProvider 配置为spring bean,我们可以注入数据源。这适用于Tomcat但不适用于OAS或Weblogic,因为我们正在传递persistence.xml中的directory_provider。可能因为数据源是由spring初始化的(因为类加载器在这些app服务器中工作的方式)。

我的问题是我们如何直接在aSpring bean中配置 hibernate.search.default.directory_provider 而不是persistence.xml?

最近的地方是:

<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

但它只需要三个属性:

<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />

解决方案

您可以将Spring bean中的hibernate属性传递为 jpaProperties

<property name="jpaProperties">
    <props>
       <prop key="hibernate.search.default.directory_provider">
       uk.company.package.JdbcDirectoryProvider
     </prop>
    </props>
</property>

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

您可以将spring bean中的hibernate属性作为jpaProperties

传递
<property name="jpaProperties">
    <props>
       <prop key="hibernate.search.default.directory_provider">
       uk.company.package.JdbcDirectoryProvider
     </prop>
    </props>
</property>