hibernate:JPA 2.1スキーマ用の汎用スクリプトはありません


Hibernate で JPA 2.1 を起動し、persistence.xml ファイルに次の行を追加しました

<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="META-INF/sampleCreate.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="META-INF/sampleDrop.ddl"/>

テーブルは postgres データベースに生成されます。

しかし、META-INF フォルダーに sampleCreate.dll はなく、エラーもありません。

何が欠けているのでしょうか?別のフォルダに生成されていますか?

ありがとうございます。



------------に答える------------

つまり、完全な解決策ではなく、解決策を見つけました。

それでも。

まず、Wil を使用していますdfly10.1.0

同じ問題に遭遇しました。生成された SQL ファイルが表示されませんでした。 しかし、いくつかの実験の後、Wildfly がアプリケーションをデプロイすると、bin ディレクトリ (C:\wildfly\bin\) に sql ファイルが生成されることがわかりました。

しかし、プロジェクトのソース フォルダーでそれらを表示したかったのです。

これには、絶対パスを使用する必要があります。 以下のように(そして私にとってはうまくいきました):

<property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
<property name="javax.persistence.schema-generation.scripts.create-target" value="D:/myproject/src/resources/META-INF/sampleCreate.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target" value="D:/myproject/src/resources/META-INF/sampleDrop.ddl"/>

しかし、コードを書く場合、これは便利ではありませんコマンドで...

どうでしたか? Glassfish、SpringBoot などで動作します。わかりませんが、同じことだと思います。



------------に答える------------

私のテストによると、ファイルは CWD (現在の作業ディレクトリ) を基準にして作成されます。

これは、次のようにしてシステム プロパティ System.getProperty("user.dir") を出力または登録することで確認できます。

Java で現在の作業ディレクトリを取得する

Maven を使用しているので、r の場合create.ddl のパスを指定して mvn test を実行すると、スクリプトは maven を実行するのと同じディレクトリに保存されます。

現在のディレクトリを見つけるには、ログインするか、CWD を印刷して、それに応じてプロパティ値を調整します。相対パスを使用することもできるので、ターゲット/META-INF ディレクトリに配置したい場合は、./target/META-INF/create.ddl を使用します。これは、CWD に対する有効なディレクトリであるためです。

タグ:

関連記事:

javascript - Node.js と Mongoose と Sails Waterline の組み合わせ

PHP - Silverstripe 3.1: 内部ループからデータ オブジェクト ページへのリンク