私の前の質問へのフォローアップの質問:Generate an SQL DB creation script with Hibernate 4休止状態はSchemaExportと永続ユニット
目標は、与えられた永続ユニットのSQLスキーマを使用してファイルを生成することができ、コマンドラインツールを持つことである(同様hibernatetool-へhibernateツールにはhbm2ddl Antタスクが存在します)。
私の前の質問に対する回答によれば、org.hibernate.tool.hbm2ddl.SchemaExport
でこれを達成できます。
Configuration
にすべてのエンティティを追加する代わりに(以前の回答で提案されたとおり)PersistenceUnit
と指定したいと思います。
を追加する永続ユニットを休止状態にするConfiguration
?
何かコメントサンプルpersistence.xml
に要求されるように編集
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
...
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory("persistentUnitName", properties);
Configuration configuration = new Configuration();
... missing part ...
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.setOutputFile("schema.sql");
...
のような。あなたのクラスは、XMLマッピング(
hbm
S)を経由してマッピングされている場合は各クラスは、@Entity
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0"
>
<persistence-unit
name="doiPersistenceUnit"
transaction-type="JTA"
>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/doi</jta-data-source>
<class>ch.ethz.id.wai.doi.bo.Doi</class>
[...]
<class>ch.ethz.id.wai.doi.bo.DoiPool</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.connection.characterEncoding" value="utf8" />
<property name="hibernate.connection.charSet" value="utf8" />
</properties>
</persistence-unit>
</persistence>
あなたは 'config.addAnnotatedClass(MyMappedPojo1.class);'行を保存しますか? – yair
@yairはいすべてのクラスを手動で指定しないようにしたいと思います(ハードコードを避けてください)。私はpersistence.xmlファイルを解析できることは知っていますが、簡単な方法があると思われます。 – Matteo
私は、あなたが構成に方言を渡していなくても、SchemaExportが作成されると失敗すると思います。 – kboom