2009-04-12 81 views
2

我在JPA/Hibernate配置中配置了两个持久性单元。现在我需要为每个持久性单元执行不同的import.sql。我如何指定为每个持久性单元执行哪个import.sql?根据Hibernate的文档,我应该将import.sql放在classpath中。如果我这样做,import.sql将在每个持久性单元上执行。我需要以某种方式为每个持久性单元指定不同的import.sql。如何在每个持久性单元的Hibernate/JPA中执行不同的import.sql?

回答

5

当您的应用程序启动时,您可以使用org.hibernate.tool.hbm2ddl.SchemaExport类进行手动操作。

SchemaExport schemaExport1 = new SchemaExport(cfg1); // there are various c-tors available 
schemaExport1.setInputFile("/import-1.sql"); 
schemaExport1.create(false, true); 

SchemaExport schemaExport2 = new SchemaExport(cfg2); 
schemaExport2.setInputFile("/import-2.sql"); 
schemaExport2.create(false, true); 
+0

该方法称为SchemaExport.setImportFile(String) – xmedeko 2011-01-13 13:41:05

7

FWIW,这是可能的休眠3.6.0.Beta1(见HHH-5337),你现在可以声明一下文件(S)使用hibernate.hbm2ddl.import_files属性导入:

hibernate.hbm2ddl.import_files /mydbload.sql,/mydbload2.sql 

所以,你可以为每个持久性单元使用不同的值。

0

在我所有的项目中,我只使用一个import.sql,并在它旁边创建不同的其他* .sql(例如:H2_import.sql,sqlServer_import.sql),并根据持久性单元使用我复制内容* .sql并将其过滤到import.sql中

相关问题