インデックスには、同一の列を持つ複数のレコードを許可しないUNIQUEデータベース制約があります。
Hibernate(v2.1.8)によって管理され、2つのDAO
getHibernateTemplate().save( theObject )
呼び出しを実行するコードがあり、その結果、上記のテーブルに2つのレコードが入力されます。
このコードがトランザクションなしで実行されると、INSERT、UPDATE、次に別のINSERT、および別のUPDATE SQLステートメントが生成され、正常に機能します。どうやら、シーケンスは最初にDB NULLを含むレコードを挿入し、次に適切なデータでそれを更新することです。
このコードが単一のSpringトランザクションにラップされたSpring(v2.0.5)で実行されると、2つのINSERTが発生し、上記のUNIQUE制約のために即時例外が発生します。
この問題は、ANSI SQLとの互換性がないため、MSSQLでのみ発生します。MySQLとOracleで正常に動作します。残念ながら、私たちのソリューションはクロスプラットフォームであり、すべてのデータベースをサポートする必要があります。
このテクノロジーのスタックがある場合、特定の問題に対する好ましい回避策は何ですか?