[解決済み] org.springframework.dao.DataIntegrityViolationException の誤報の原因?
質問
hibernate を使用して、すべての列が非 null として定義されている mysql テーブルに挿入しています。このテーブルには、一意の主キーと、いくつかのカラムに一意のインデックスがあります。
次のようなエラーが発生します。
org.springframework.dao.DataIntegrityViolationException: Could not JDBC バッチアップデートの実行; SQL [insert into MY_TABLE(col1, col2, col3, col4, ID_) values (?, ?, ?, ?, ?)]; constraint [null].
このエラーは顧客ログにあり、自分では再現できないので、insert文の値がどうなっているのかデバッグを入れることができません。
私の理解では、"制約 [null]" は、"not null" 制約に違反していることを意味します。しかし、私のコードを見ると、hibernateがNULL IDを挿入しようとしていない限り、挿入時にデータがNULLになる可能性はありません(これはhibernateの非常に悪いバグなので、可能性は低いと思われます)。
しかし、一意性制約に違反していることが起こる可能性があることはわかります。このメッセージは誤解を招くもので、実際にはユニークキー違反が発生している可能性はありませんか?constraint[null]"は常にnullでない制約に違反したことを意味するのでしょうか?
解決方法を教えてください。
SpringのソースコードからDataIntegrityViolationExceptionのコンストラクタの呼び出し元を探すと、その呼び出し元は
org.springframework.orm.hibernate3.SessionFactoryUtils
:
return new DataIntegrityViolationException(ex.getMessage() + "; SQL [" + jdbcEx.getSQL() +
"]; constraint [" + jdbcEx.getConstraintName() + "]", ex);
つまり、例外の原因は制約に違反したことであり
null
は、JDBC例外で返される制約の名前です。ですから、JDBC例外に違反した制約名を入力しなかったMySQLドライバを非難すべきです。しかし、違反した制約は任意の制約である可能性があり、必ずしも
not null
制約があります。
関連
-
エラー java.util.NoSuchElementException
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
ローカルリソースのロードが許可されていない場合の解決策
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
java の例外が発生しました java
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
Javaエラーメッセージがenclosingクラスでない
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。