問題タブ [liquibase-hibernate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1277 参照

java - Liquibase で SQL スクリプトが実行されない

私はスプリングブートアプリケーションを持っています。このアプリケーションで liquibase を使用したいので、pom.xml に liquibase 依存関係を追加しました。以下の「liquibase-changelog.xml」ファイルの詳細を見つけてください:-

createTable.sql

アプリケーションのプロパティ

アプリケーションを実行した後でも、このテーブルは DB に作成されません。誰でも私がどこで間違っているのか教えてください!

ログ:-

0 投票する
0 に答える
1664 参照

java - 複数のスキーマ内のエンティティに対する Liquibase-hibernate 変更ログの生成

Liquibase-hibernate5 (Spring-5.0.4.RELEASE、Hibernate-5.2.15.最終的な JPA-2.1.1 アプリケーションは、サーブレット 3.1 をすべて (完全に) プログラムで構成します)。変更ログ形式として JSON を使用し、liquibase-maven-plugin (v3.5.5) で liquibase-hibernate5 (v3.6) を使用しています。config で使用されている JPA 仕様のバージョンは 2.1.1 です。POM からのスニペット:

これが私の現在のliquibase.propertiesです:

次に、練習に従って使用する差分を実行するために:

すべてがエラーなしで正常に機能しているように見え、以前の空の変更ログ ファイルには適用可能なすべての変更セットが取り込まれています。しかし、私が理解できないように見える1つの問題があります。

実際、私のすべてのエンティティはグループ化され、スキーマ間で分割されています(分離、マイクロサービスでの使用など(この質問の範囲外))。接続しようとしているデータベースユーザー(db_userとしましょう)には、作成に必要なすべての権限がありますデータを保持するすべてのアプリケーション スキーマ内のテーブルたとえば、schema1 と schema2 が、以下のエンティティのテーブルが属するスキーマであるとします。

エンティティからの抜粋:

ここでの問題は、変更セットが生成されるときに、スキーマ名に関する情報がないことです (javax.persistence.Table の schema 属性によって割り当てられます)。これにより、すべての移行が db_user でのみ実行されることになり、ここでは望ましくありません。シーケンスの場合、以下のコード例:

生成された変更セットは次のようになります。

シーケンス名に注意してください。これは、db_user の「SCHEMA1.some_id_seq」という名前のシーケンスを表し、「SCHEMA1」の「some_id_seq」という名前のシーケンスではありません。

私が期待しているのは、これらの変更セットが mvn liquibase:update にそれぞれのスキーマで DDL を実行するように指示するものを表す必要があるということです。生成された変更セットを実行しようとしましたが、すべてのオブジェクトが db_user スキーマで作成されるたびに終了します (変更ログと変更ログ ロック テーブルのみが表示されることを期待しています)。

私は StackOverflow と他のいくつかのサイトを精査しましたが、私のような問題 (解決策またはヒント) を抱えている人を見つけることができませんでした。Liquibase のドキュメントもあまり役に立ちません (氷山の一角しか見えないかもしれません)。でもお願いします、ここで誰か助けてくれませんか?または、私が見逃した非常に基本的なことを指摘するかもしれません。:(