【问题标题】:Externalize hbm file out of Context - How to?将 hbm 文件从上下文外部化 - 如何?
【发布时间】:2012-01-24 16:20:06
【问题描述】:

我正在尝试将 hbm 文件从“上下文”外部化。这些 hbm 文件位于 tomcat 主文件夹下名为“test”的目录中。 我已经尝试将“测试”添加到类路径以及 /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 中查看。有没有办法指示类加载器也查看外部目录?

【问题讨论】:

    标签: hibernate spring


    【解决方案1】:

    在 setenv.bat 中将外部目录设置为类路径,并从类路径中删除“类路径”:Person.hbm.xml 有效。

    【讨论】:

      【解决方案2】:

      由于您已经在使用属性占位符 (${jdbc.dialect}),因此您的配置中可能有一个 &lt;context:property-placeholder...&gt;。一种方法是在您正在加载的任何属性文件中指定 hbm.xml 的完整路径。

      hibernate.config=/path/to/your/Person.hbm.xml
      

      在你的 spring 配置中

      ...
      <property name="mappingResources">
                  <list>
                      <value>${hibernate.config}</value>
                  </list>
      </property>
      
      ...
      

      编辑:路径可能必须是正确的 URL 格式,即;

      file:///d:/some/dir/Person.hbm.xml
      

      【讨论】:

      • 没用。请参阅我的编辑。感谢您的回复。
      猜你喜欢
      • 2012-02-15
      • 2021-04-05
      • 1970-01-01
      • 2018-07-01
      • 2023-03-22
      • 1970-01-01
      • 2015-05-04
      • 2015-10-22
      • 2021-04-16
      相关资源
      最近更新 更多