これは、私が休止状態の時代に陥ったことの1つです(覚えていました)。(親エンティティ内の)コレクションから(いくつかの)子オブジェクトを削除し、途中でフラッシュせずに1つのトランザクションで同じコレクションに新しいエンティティを追加すると、Hibernateは「削除」の前に「挿入」を実行します。子テーブルの列の1つに一意の制約があり、以前に(私と同じように)すでにいくつかのデータを削除しているため、違反しないと期待している場合は、イライラする準備をしてください。Hibernateフォーラムは次のことを提案しています。
- これはDBの設計上の欠陥であり、再設計されました。
- 削除と挿入の間にフラッシュ(またはコミットする場合)。
両方を行うことはできず、Hibernateソースを微調整して再コンパイルすることになります。たった1行のコードでした。しかし、1つのラインを見つけるための努力は、約27杯のコーヒーと3つの眠れない夜に相当しました。
これは、チームに実際の専門家がいない状態でHibernateを使用するときに発生する可能性のある問題と癖のほんの一例です(専門家:Hibernateの哲学と内部作業について十分な知識を持っている人)。あなたの問題、解決策、コーヒーのリットル、そして眠れない夜の数は変わるかもしれません。しかし、あなたはその考えを理解します。