我有一个Hibernate JPA项目,在类路径上有一个import.sql
文件。我已经尝试了很多东西来使它工作。我的persistence.xml是:
<?xml version="1.0" encoding="UTF-8"?>
<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.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="SNAPSHOTPU"
transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/PostgresqlDS</jta-data-source>
<class>net.example.Actor</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="javax.persistence.schema-generation.database.action"
value="drop-and-create" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.hbm2ddl.import_files" value="import.sql" />
</properties>
</persistence-unit>
</persistence>
我也尝试过没有hibernate.hbm2ddl.*
的东西,因为这是JPA,但似乎都不起作用。我的import.sql位于src/main/resources
,这是一个Maven项目。
我在文件中有一个有效的SQL语句:
insert into actors values (1, 'Test Import.sql');
我甚至在文件的开头尝试了一个空行,因为我看到有人建议。我已经为Hibernate启用了调试,并且可以看到它在日志中运行DDL命令来创建表,但我没有看到任何关于import.sql
或文件中的insert语句的内容。
为什么这不起作用?
修改
@Baldurian在下面得到它,这是有效的(在persistence.xml中):
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="javax.persistence.schema-generation.database.action"
value="drop-and-create" />
<property name="javax.persistence.sql-load-script-source"
value="/import.sql" />
</properties>
答案 0 :(得分:1)
尝试(相应地更改javax.persistence.sql-load-script-source路径):
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create" />
<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
<property name="javax.persistence.sql-load-script-source" value="/import.sql"/>
</properties>