2012-03-09 5 views
2

私たちはhsqldbでhibernateとddlの自動作成にいくつか問題があります。私たちがマップされたオブジェクトを変更したときに我々は通常、休止状態hibernate.hbm2ddl.auto hibernateはddlをいつ作成または更新するかを決定しますか?

<property name="hibernate.hbm2ddl.auto" value="create-drop"/> 

を使用

は自動的にDBにスキーマ内の表を作成し、時にはそれはそれを行うことを拒否します。その場合、すべてのテーブルを再作成するためにhibernateに納得させるために、ファイルシステムから手動でDBを削除する必要があります。

データベースのデータモデルをいつ再作成するかを誰かが知っていますか?私はSessionFactoryが作成されたときにhiberbateがテーブルを更新または作成することを納得させる正確な条件は何かを決定することを読んだことがありますか?あなたの休止状態の設定ファイルで

+0

削除していない場合は、その時点でテーブルに何らかのロックや何かがあって、Hibernateが削除できなくなっている可能性があります。 – AHungerArtist

+0

ええ、それは私が理解できるものですが、スキーマを削除して手動で再作成するときにも問題があります。したがって、スキーマは完全に空です。したがって、ロックが残っているとは限りません。 – treeno

+0

また、アプリケーションが使用するスキーマを新しいものに変更しました。また、hibernateはテーブルの作成を拒否しました。アプリケーションでの変更なしに、ファイルシステムからdbを削除した後で動作します。 – treeno

答えて

5

このオプション:create、またはcreate-dropまたはvalidate

<property name="hbm2ddl.auto">update</property> 

変更updatewhichever you want it to be

また、設定が正しい場合は、ログメッセージを確認し、必要に応じてログレベルを上げてください。

+0

既にcreate-dropに設定されています。 – treeno

関連する問題