我处境相当恶劣。我们使用罗盘来实现与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>
答案 0 :(得分:0)
我找到了解决方案。
您可以将spring bean中的hibernate属性作为jpaProperties
传递<property name="jpaProperties">
<props>
<prop key="hibernate.search.default.directory_provider">
uk.company.package.JdbcDirectoryProvider
</prop>
</props>
</property>