这已经讨论过,但是没有一个解决方案/建议对我有用。我想通过persistence.xml在Spring中配置lucene搜索索引路径。这很重要,因为部署服务器(当然)与本地计算机不同,因此路径不匹配。现在,我在persistence.xml中的hibernate-search配置如下所示:
<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" />
我见过这个......
......所以应该有用吗?!但是,该变量未被替换,并且文件被写入新创建的名为$ {tempdir}的子目录,这不是我想要的:)
感谢您的帮助!
答案 0 :(得分:3)
在您研究之前,请通过this explanation了解如何读取和使用持久性xml。
但是,如果在spring上下文中配置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
来读取属性文件。
希望这有帮助。