1

Web アプリケーションには Spring + Hibernate を使用します。

この Web アプリケーションは、関連のない 2 つの運用サイトにデプロイされます。これら 2 つの運用サイトは Webapp を使用して Person データを並行して生成および使用します。

私がしなければならないことは、これら 2 つの無関係な本番サイトで生成された Person がすべて個別の PK を持っていることを確認して、いつでもこれら 2 つのサイトからの Person データをマージできるようにすることです。

私に課せられたさらなる制約は、これらの PK が に収まるということLongです。そのため、UUID を使用できません。

私がやろうとしているのはS_PERSON、ジェネレーターとしてシーケンスを持つ現在の休止状態のマッピングを変更することです:

<hibernate-mapping default-cascade="save-update" auto-import="false">
    <class name="com.some.domain.Person" abstract="true">
        <id name="id">
            <column name="PERSON_ID"/>
            <generator class="sequence">
                <param name="sequence">S_PERSON</param>
            </generator>
        </id>
    ...
</hibernate-mapping>

配置サイトの Spring 構成ファイルに応じてPERSON_ID、PK が異なるシーケンス (おそらくS_PERSON_1と) から生成されるように、構成可能なものに変換します。S_PERSON_2

もちろん、

            <generator class="sequence">
                <param name="sequence">${sequenceName}</param>
            </generator>

うまくいかないので、何か他のことを考え出さなければなりません...ジェネレーターは、シーケンスまたは別のものを順番に指す構成可能なBeanを指す必要があると思いますが、それを行う方法がわかりません...

アイデアや回避策はありますか?

ありがとう!

4

2 に答える 2

2

両方の本番システムでシーケンスを使用できますが、定義が異なります。

本番システム 1: CREATE SEQUENCE sequence_name START WITH 1 INCREMENT BY 2;

本番システム 2: CREATE SEQUENCE sequence_name START WITH 2 INCREMENT BY 2;

最初のシーケンスは奇数のみを生成し、2 番目のシーケンスは偶数のみを生成します。

于 2008-10-08T16:33:28.867 に答える
0

基本的に、キーの値が異なるセットに分類されるようにする必要があります。そのため、システム識別子を varchar の先頭に追加します。

注:これはテストしていませんが、データベースごとに通常のシーケンスを定義できるはずです

そして次のようなことをします

insert VALUES('Sys1' || to_char(sequence.nextval), val1, val2, val3);
insert VALUES('Sys2' || to_char(sequence.nextval), val1, val2, val3);
于 2008-10-08T18:01:49.670 に答える