我尝试在Web应用程序运行时导入sql文件。我将import.sql
放入src/main/resources/import.sql
。然后我通过添加persistence.xml
指令修改了import_files
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jsp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="spPU" transaction-type="JTA">
<description>SP Persistence Unit</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/SpDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="false"/>
<property name="hibernate.hbm2ddl.import_files" value="import.sql"/>
</properties>
</persistence-unit>
</persistence>
但是在重新部署或重新启动服务器之后无需在数据库中上传。 我使用WildFly 8.1.0,Hibernate 4.3.5.Final,Database h2database 1.3.161。 我试图从import.sql中删除空行并将hibernate.hbm2ddl.auto更改为create-drop。 知道为什么import.sql没有加载到数据库中吗?
答案 0 :(得分:5)
我有类似的情况,请检查是否:
1)您可以手动运行您的sql脚本(导入期间发生错误时不显示SQL错误)
2)请确保所有sql语句都是单行,例如:
create table Table1{ column1, column2,etc.};
而不是
create table Table1{
col1 ..,
col2 ..,
}
使用导入时我注意到这两个问题,希望这也解决了你的问题。
[更新]
感谢@vsapiha支持多行sql:
<property name="hibernate.hbm2ddl.import_files_sql_extractor">org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</property>
答案 1 :(得分:1)
您不需要指定导入文件。默认情况下,Hibernate将在 WEB-INF / classes / import.sql 中查找,如果您将文件放在您所在的位置,它将在WAR中的位置。我总是使用WAR,而不必指定它的位置。
如果您使用 JAR ,则根据此link,导入将放在文件的根目录中。 (我从未尝试过)。