私は、単一のデータソースを持つ「シンプルな」Springブートアプリケーションを持っています。 次の構成は、私の構成で存在している:Hibernateは、別のスキーマで既に利用可能なときにシーケンスを生成しません。
spring:
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
default_schema: CORE
flyway:
schemas:
- CORE
と、次のIDジェネレーター
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "seq-pooled-lo")
@GenericGenerator(
name = "seq-pooled-lo",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.INCREMENT_PARAM,
value = "50"
),
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.OPT_PARAM,
value = "pooled"
),
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.SEQUENCE_PARAM,
value = "seq_pooled_lo_sequence"
)
})
今私の問題は、以下の通りである。
私はこのアプリを起動すると、それが作成されます「CORE」スキーマ上のシーケンス。すべてうまく動作します。データの保存、取得は問題ありません。私はその後、アプリケーションの2番目のインスタンスを起動するが、異なるdefault_schema: SECOND
を定義するためにYAMLファイルをオーバーライドすると、 "SECOND"スキーマで新しいシーケンスを生成しません。最初に "SECOND"スキーマを定義してアプリを起動し、 "CORE"で起動すると、 "CORE"ではなく "SECOND"スキーマでシーケンスが作成されます。
私は、両方のスキーマで異なるシーケンスを作成すると思います。なぜそれはしないのですか?
私はまた、欠落しているスキーマにシーケンスを手作業で追加しようとしましたが、悲しいことに、手助けしていないようです。
を使用するエンティティだけで編集方針を返しますが、私は本当にCustomIdGeneratorが必要ですか?私はそれをやっているようにナイーブなアプローチがうまくいかない理由を知りたいです。 – Traspler