【问题标题】:hibernate.search.default.directory_provider in spring beans rather than persistence.xmlspring bean 中的 hibernate.search.default.directory_provider 而不是 persistence.xml
【发布时间】:2012-12-18 10:25:54
【问题描述】:


我的处境相当糟糕。我们使用 compass 与 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 初始化的(因为类加载器在这些应用服务器中的工作方式)。

我的问题是我们如何直接在 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 中的休眠属性作为 jpaProperties

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

【问题讨论】:

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


    【解决方案1】:

    我找到了解决办法。

    您可以将 spring bean 中的休眠属性作为 jpaProperties 传递

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 2019-05-07
      • 2012-05-07
      相关资源
      最近更新 更多