【发布时间】:2012-01-04 16:17:24
【问题描述】:
我有基于 Hibernate 和 Spring(编程配置)的 Web 项目。 Hibernate 映射在一个包中提供,该包被归档在一个 JAR 中。
说到初始化我曾经调用的会话工厂:
sessionFactory.
setMappingDirectoryLocations(new Resource[]{
new ClassPathResource("org/all/theway/to/hibernatemappings")});
为了告诉 Hibernate 在哪里寻找映射文件。 “org/all/theway/to/hibernatemappings”是包含 hbm.xml 文件的包。这在 Eclipse(GWT 开发模式)中运行良好,因为包含映射的项目也已检出并链接到我的 Web 项目。但是,一旦我创建了一个战争并将其部署到 Tomcat,它就无法获取类路径资源。
Spring 的 ClasspathResource javadoc 暗示:“如果类路径资源驻留在文件系统中,则支持解析为 java.io.File,但不支持 JAR 中的资源。始终支持解析为 URL。 "
但是该怎么做呢?我也可以改用 setMappingJarLocation,但我不喜欢在我的 Spring 上下文中硬编码 jar 文件名。此外,当我尝试它时,它也只能在 IDE 中工作,但在 Tomcat 中,相同的文件路径(WEB-INF/lib/file.jar)不起作用。这也让我相信这将是一个丑陋的解决方案。
是否有不使用 jar 文件的解决方法?
【问题讨论】:
标签: hibernate spring jar hibernate-mapping applicationcontext