は春

2012-02-13 7 views
1

でのHibernate Searchの動的インデックスディレクトリを設定しますしかし、これはソリューション/アドバイスのどれも私のために働いていない、すでに議論されています。私は、persistence.xmlを介してSpringでlucene検索インデックスパスを設定したいと思っています。これは重要です。なぜなら、展開サーバーは(もちろん)ローカルマシンとは異なるため、パスが一致しないからです。今、persistence.xmlの内部休止検索の私の構成は次のようになります。は春

<property name="hibernate.search.default.directory_provider" value="filesystem" /> 
<property name="tempdir" value="#{ systemProperties['java.io.tmpdir'] }" /> 
<property name="hibernate.search.default.indexBase" value="${tempdir}\hibernate\index" /> 

が、私はこれを見てきました...

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html#expressions-beandef-xml-based

...それが動作するはずですので、? !しかし、変数が交換されていない、とのファイルは、私はあなたの助け:)

感謝を望んでいたものではありません名$ {TEMPDIR}を有する新たに作成されたサブディレクトリに書き込まれます!

答えて

3

あなたはこのを調べる前に、永続XMLを読み込んで使用されているかについてthis explanationを通過してください。あなたは春のコンテキストでLocalContainerEntityManagerFactoryBeanを設定する場合

はしかし、persistence.xmlでフィールド値は、プロパティファイルを通じて設定可能です。

エンティティマネージャファクトリのjpaPropertyMapプロパティを使用して、あなたの永続性のXMLファイルで使用されている値を設定することが可能です。

以下は、私のプロジェクトで使用されている設定例です。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="hibernate.c3p0.min_size" value="5"/> 
      <entry key="hibernate.c3p0.max_size" value="20"/> 
      <entry key="hibernate.c3p0.timeout" value="1800"/> 
      <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 
      <entry key="hibernate.search.default.indexBase" value="${index.directory}"/> 
     </map> 
    </property> 
</bean> 

上記の構成では、hibernate.search.default.indexBaseがプロパティファイルから読み込まれています。もちろん、プロパティファイルを読むにはSpringのPropertyPlaceholderConfigurerが必要です。

これが役に立ちます。