我在JPA / Hibernate配置中配置了两个持久性单元。现在我需要为每个持久性单元执行不同的import.sql。如何指定应为每个持久性单元执行哪个import.sql?根据Hibernate的文档,我应该将import.sql放在classpath中。如果我这样做,import.sql将在每个持久性单元上执行。我需要以某种方式为每个持久性单元指定不同的import.sql。
答案 0 :(得分:7)
FWIW,这可以通过Hibernate 3.6.0.Beta1(参见HHH-5337)实现,您现在可以使用hibernate.hbm2ddl.import_files
属性声明要导入的文件:
hibernate.hbm2ddl.import_files /mydbload.sql,/mydbload2.sql
因此,您可以为每个持久性单元使用不同的值。
答案 1 :(得分: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);
答案 2 :(得分:0)
在我的所有项目中,我只使用一个import.sql,然后在它旁边创建不同的其他* .sql(例如:H2_import.sql,sqlServer_import.sql)并依赖于使用我复制内容的持久性单元* .sql并将其转换为import.sql