我在Maven上使用Spring MVC + JPA / Hibernate配置。当我部署到Tomcat时,我希望Hibernate执行import.sql文件,但是无论它放在何处或如何配置该文件的路径都无所谓,它永远找不到。
org.hibernate.tool.hbm2ddl.SchemaExport SchemaExport - HHH000227: Running hbm2ddl schema export org.hibernate.tool.hbm2ddl.SchemaExport SchemaExport - Import file not found: /META-INF/import.sql
我的Hibernate配置是在Spring中:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> ... <property name="jpaProperties"> <props> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create-drop</prop> <prop key="hibernate.hbm2ddl.import_files">/META-INF/import.sql</prop> </props> </property> </bean>
我正在使用标准的Maven Web文件夹结构,将我import.sql放在/src/main/webapp/WEB- INF/文件夹中。我也尝试删除该import_files属性并将其放在webapp文件夹中无济于事。
import.sql
/src/main/webapp/WEB- INF/
import_files
webapp
我怀疑这可能与将web.jarURL 映射到的tomcat策略有关server_root/web/*。
web.jar
server_root/web/*
在import.sql从类路径的根目录读取。在Maven项目src/main/webapp中,不是类路径而是Web内容。类路径由中的Java类src/main/java和中的其他非Java事物组成src/main/resources。
src/main/webapp
src/main/java
src/main/resources
将您的内容import.sql放入src/main/resourceshibernate状态,即可使其hibernate。就像构造jar一样,此目录的内容也被复制到WEB- INF/classesWeb应用程序中类路径的一部分。
WEB- INF/classes