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: 内部ループからデータ オブジェクト ページへのリンク