hbm2ddl.auto
に設定すると、奇妙な休止状態の動作が発生しupdate
ます。
テストセットアップでは、2人のデータベースユーザーがいます。1人はベータアプリケーションのテーブルを含み、もう1人は主に開発に使用されます。つまり、異なるユーザーの同じテーブル名。新しいテーブルを作成する場合は、を使用して作成しhbm2ddl.auto=update
ます。
ここで突然、奇妙な動作が発生します。更新プロセスは、間違ったユーザーを持つ既存のテーブルを探し、正しいユーザーでは見つからないテーブルを作成します。
たとえば、次のテーブルが存在する場合
USER_A.TABLE_1
USER_B.TABLE_2
そして、3つのテーブルを構成して更新しますTABLE_1, TABLE_2, TABLE_3
。USER_Bを使用すると、次のようになります。
USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
TABLE_1
のために作成されていませんUSER_B
。名前を変更USER_A.TABLE_1
しUSER_A.TABLE_0
て再度更新すると、期待どおりの結果が得られます。
USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
これは誰にとっても意味がありますか?「ねえ、私はすでにこのサーバー上にこのテーブルを作成しました(そして私はユーザーを気にしません)」のように覚えている内部休止状態キャッシュのようなものはありますか?
これが構成の問題ではないことを確認するためにかなりのテストを費やしました。これをantから、またはIDEを使用して、さまざまなマシン、さまざまな構成で再現し、USER_Aのパスワードがビルドディレクトリなどのどこにも見つからないことを確認しました。したがって、100%です。確かに、動作は説明されているとおりですが、何が起こるかについては完全に考えられていません。
この問題はしばらくの間しつこいものになっているので、これについてのあなたの考えを聞いてとてもうれしく思います。
どうもありがとう、ピーター