Как выполнить differentnet import.sql в Hibernate/JPA для каждой единицы сохранения?

Я настроил две единицы сохранения в своей конфигурации JPA/Hibernate. Теперь мне нужно выполнить другой import.sql для каждой единицы сохранения. Как я могу указать, какой файл import.sql должен выполняться для каждой единицы сохраняемости? Согласно документации Hibernate, я должен поместить import.sql в путь к классам. Если я это сделаю, import.sql будет выполняться на каждой единице персистентности. Мне нужно как-то указать разные import.sql для каждой единицы сохранения.


person Dan    schedule 12.04.2009    source источник


Ответы (3)


Вероятно, вы могли бы сделать что-то вручную, используя класс 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);
person Matt Sidesinger    schedule 13.04.2009
comment
Метод называется SchemaExport.setImportFile(String) - person xmedeko; 13.01.2011

FWIW, это возможно с Hibernate 3.6.0.Beta1 (см. HHH-5337), теперь вы можете объявить, какие файлы импортировать, используя свойство hibernate.hbm2ddl.import_files:

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

Таким образом, вы можете использовать разные значения для каждой единицы персистентности.

person Pascal Thivent    schedule 28.10.2010

Во всех моих проектах я использую только один import.sql, а рядом с ним я создаю разные другие *.sql (например: H2_import.sql, sqlServer_import.sql) и в зависимости от того, какую единицу персистентности использовать, я копирую содержимое *.sql и вставьте его в import.sql

person abdellah7000    schedule 28.02.2013