Я пытаюсь экспортировать сгенерированный DDL в выходной файл вместо непосредственного отображения в командной строке для hbm2ddl.auto = update (с использованием автоматической генерации схемы).
Я знаю, что не может быть хорошей идеей генерировать схему, используя ее для производственной базы данных. Я уже прошел через темы, которые говорят об этом.
Hibernate: hbm2ddl.auto = обновление в рабочем состоянии?
Я пытаюсь использовать это для разработки / тестирования баз данных.
Но проблема, с которой я здесь сталкиваюсь, заключается в том, что она не отправляет сгенерированный DDL в выходной файл, хотя я использую атрибут «outputfilename» в hbm2ddl
экспортер.
(согласно этому http://docs.jboss.org/tools/2.1.0.Beta1/hibernatetools/html/ant.html)
Вот как выглядит мой build.xml. Я использую конфигурацию Jpa в Hibernate.
<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="classpath.hibernate" />
<target name="db_update_schema_sql" depends="db_config"
description="create SQL script for updating schema">
<hibernatetool destdir="${out.dir}">
<jpaconfiguration persistenceunit="${persistence.unit.name}"/>
<classpath path="${build.classes.dir}"/>
<hbm2ddl export="false" create="false" update="true" drop="false" outputfilename="update.sql" delimiter=";" format="true"/>
</hibernatetool>
</target>
<target name="db_full_update" depends="db_config" description="Updates database">
<antcall target="db_update_schema_sql" />
</target>
"update.sql" никогда не создается / обновляется, когда я устанавливаю update = "true". Он создает / обновляет только когда я использую либо create = "true" или drop = "true", либо оба.
Я немного углубился в это. Я нашел пару вопросов, связанных с этим в Hibernate Jira. Это все еще говорит, что это не решено. Для этого есть патч. Не уверен
использовал ли кто-нибудь этот патч.
https://hibernate.onjira.com/browse/HHH-1186
https://hibernate.onjira.com/browse/HBX-757
Я был бы очень признателен, если бы кто-нибудь, использующий эту функцию update = "true" для генерации ddl непосредственно в файл, объяснил мне, как он это сделал.
Кроме того, если вы используете для этого патч, дайте мне знать, как вы применили патч к существующему файлу Jar.
Спасибо,
SM