0


私はかなり厄介な状況にあります。Lucene との Hibernate 検索統合にコンパスを使用し、FSDirectoryProvider、RAMDirectoryProvider などの代わりに( JdbcDirectoryを使用して) データベース ディレクトリ検索を実装しました。

問題は、以下のようにディレクトリ プロバイダーが META-INF/persistence.xml 内のプロパティとして渡されることです。

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

JdbcDirectory にはデータソースを渡す必要があるため、データベースの詳細を JdbcDirectoryProvider に渡す必要があります。

データベースとインデックスの詳細を含むプロパティ ファイル (クラス パス内) を使用して、型にはまらない方法で (ディレクトリ プロバイダー用の) データソースを構築しています。

uk.company.JdbcDirectoryProviderをSpring Bean として構成した場合、データソースを注入できます。これは Tomcat ではうまく機能しますが、persistence.xml で directory_provider を渡しているため、OAS や Weblogic ではうまく機能しません。おそらく、データソースが春によって初期化されるためです(これらのアプリサーバーでクラスローダーが機能する方法のため)。

私の質問は、persistence.xml の代わりに aSpring Bean 内でhibernate.search.default.directory_providerを直接構成するにはどうすればよいですか?

最寄りの場所は次のとおりです。

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

ただし、次の 3 つのプロパティのみが必要です。

<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>
4

1 に答える 1

0

解決策を見つけました。

Spring Bean の休止状態のプロパティを jpaProperties として渡すことができます

<property name="jpaProperties">
    <props>
       <prop key="hibernate.search.default.directory_provider">
       uk.company.package.JdbcDirectoryProvider
     </prop>
    </props>
</property>
于 2012-12-18T22:58:12.127 に答える