何の役にも立たない答えを探すのに数日を費やしたという問題があります...
HiLo Id生成を使用しており、エンティティテーブルがhibernate_unique_keyテーブルと同じスキーマにある限り、すべてが正常に機能しているようです。
テーブルの構造は非常に単純です。データベースにdbo.hibernate_unique_keyとしてhi値テーブルがあります。いくつかのエンティティテーブルもdboスキーマにあり、問題なく機能します。次に、「Contact」スキーマの下にテーブルがあります(Contact.PersonやContact.Addressなど)。
個人マッピングファイル:
<class name="Person" table="Person" schema="Contact">
<id name="Id" unsaved-value="0">
<generator class="hilo">
<param name="max_lo">100</param>
</generator>
</id>
...
Personエンティティを挿入しようとすると、「Invalid object name'Contact.hibernate_unique_key'」というエラーが表示されます。このエラーは確かに十分に明らかです。したがって、次のように追加します。
<param name="schema">dbo</param>
私のマッピングファイル/ジェネレータ要素に。これで、SessionFactoryをビルドすると、「同じキーのアイテムがすでに追加されています」というメッセージが表示されます。エラー。だから今、私は少し立ち往生しています。クラスからスキーマを取得するため、スキーマなしでHiLoジェネレーターを離れることはできません。また、スキーマが既に追加されているため(おそらく、XML cfgファイルで識別される「default_schema」であるため)、スキーマを指定できません。 )。
私はここで完全に馬鹿にされていますか?私もしなければならない
A)すべてのテーブルをdboスキーマに保持するか
B)DB内の一意のスキーマごとに個別のHiLoキーテーブルを作成しますか?
これらのシナリオはどちらも私のアプリケーションにとって特に好ましいものではないため、この問題に対処するためにマッピングファイルを「修正」できることを望んでいます。