特定のエンティティクラスのテーブル作成スクリプトを生成したい。
hibernate(hbm2dllツール)を使用してすべてのクラスの完全なスクリプトを自動生成できます(JPA注釈付きエンティティクラスからデータスキーマを自動生成します)が、これをフィルタリングする方法がわからないため、1つのエンティティクラスに関連する部分のみ残っています。
あいさつ、ローレス
特定のエンティティクラスのテーブル作成スクリプトを生成したい。
hibernate(hbm2dllツール)を使用してすべてのクラスの完全なスクリプトを自動生成できます(JPA注釈付きエンティティクラスからデータスキーマを自動生成します)が、これをフィルタリングする方法がわからないため、1つのエンティティクラスに関連する部分のみ残っています。
あいさつ、ローレス
エンティティ間に宣言された関連付けはありませんか?Hibernateは、ドメインモデルの知識に基づいて、外部キーやマッピングテーブルなどを生成します。
単一の分離テーブルのDDLが必要な場合は、そのエンティティのみを使用してセッションファクトリを構成し、空のデータベースを指定できます。次に、ログ(上記のようにHibernateによって生成された)からDDLを記録し、必要なものが得られたらこのデータベースを削除できます。
ただし、関連付けがある場合、休止状態はこれを行うことができません。
その単一のエンティティでpersistence.xmlファイルを構成し、他のすべてのリストされていないエンティティを除外してから、DDL自動生成を有効にしてエンティティマネージャファクトリを起動すると、それが得られる可能性があります。
<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_2_0.xsd" version="2.0">
<persistence-unit name="stackoverflow" transaction-type="RESOURCE_LOCAL">
<class>com.stackoverflow.model.SingleEntity</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
スクリプトの生成は自分でコードで処理しました。基本クエリはhbm2ddlツールを呼び出すことによって生成され、私のコードはそれらにいくつかの詳細を追加します(作成クエリに存在しない場合は追加する、特定の作成インデックスクエリを追加するなど)