我正在尝试将hbm文件外化为“Context”。这些hbm文件位于tomcat主文件夹下的名为“test”的目录中。 我尝试将“test”添加到classpath以及/conf/catalina.properties的shared.loader或common.loader属性。它不起作用。
有人可以帮我找到正在寻找的解决方案吗?
以下是app-context.xml
中的代码段<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.test.model.Person</value>
</list>
</property>
<property name="mappingResources">
<list>
<value>classpath:Person.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
编辑: 问题是,WebAppClassLoader只在WEB-INF / classess中查找。有没有办法指示类加载器也查看外部目录?
答案 0 :(得分:0)
由于您已经在使用属性占位符(${jdbc.dialect}
),因此您可能在配置中的某处有<context:property-placeholder...>
。一种方法是在你加载的任何属性文件中指定hbm.xml的完整路径。
hibernate.config=/path/to/your/Person.hbm.xml
在你的春季配置
...
<property name="mappingResources">
<list>
<value>${hibernate.config}</value>
</list>
</property>
...
编辑:路径可能必须正确地进行URL格式化,即;
file:///d:/some/dir/Person.hbm.xml