Reputation: 2035
I try to import sql file when web application runs. I placed import.sql
into src/main/resources/import.sql
. Then I modified my persistence.xml
by adding import_files
directive:
<?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>
But after redeploy or restart server nothing to uploads in database. I use WildFly 8.1.0, Hibernate 4.3.5.Final, Database h2database 1.3.161. I tried to remove blank lines from import.sql and change hibernate.hbm2ddl.auto to create-drop. Any idea why import.sql does not load in database?
Upvotes: 1
Views: 6773
Reputation: 2584
I had similar situation, please check if:
1) You can run your sql script manualy (No SQL errors are shown when error occurs during import)
2) Please make sure that all sql statements are single-lined, eg:
create table Table1{ column1, column2,etc.};
instead of
create table Table1{
col1 ..,
col2 ..,
}
I noticed these 2 issues when using import, hope this solves your problem too.
[UPDATE]
Thx to @vsapiha there is support for multiple lines sql:
<property name="hibernate.hbm2ddl.import_files_sql_extractor">org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</property>
Upvotes: 5
Reputation: 336
You don't need to specify the import files. Hibernate will look by default at WEB-INF/classes/import.sql, the place where it will be in your WAR if you place the file where you did. I always use WAR and never had to specify the location of it.
If you use JAR, the import goes in the root of the file, according to this link. (I never tried it though).
Upvotes: 1