1. ホーム
  2. ハイバーネート

org.springframework.dao.DataIntegrityViolationException の解決策について

2022-03-02 13:07:57
<パス

バグの原因を見つけるのに多くの時間がかかり、それを修正するのにわずかな時間しかかかりませんでした。同僚は、バグを見つけて修正するのにほとんど一日かかったからよかったものの、そうでなければ明日までに修正できなかったら恥ずかしい・・・・・・と言っていました。話を元に戻すと、フロントエンドのページで次のようなエラーが報告されました。
DataIntegrityViolationException: SQL [insert into "GOODS " ("GOODSNAME", "BILLSTATUS", "GOODSDISTRICT", "GOODSPRICE", "GOODSCOUNT", "CREATIONTIME", "ID ") values (? , ? , ? , ? , ? , ? , ?)] DataException: JDBC バッチアップデートを実行できませんでした DataException: JDBC バッチアップデートを実行できませんでした
ドキュメントで解決された詳細な問題を引用し、私もこのブログを参考に解決しました。
エラー理由:データベースのフィールド長に矛盾があるため。
列(nullable = false, 精度 = 3, スケール = 2)
private BigDecimal discountValue;//discountValue
つまり、BigDecimal(3、2)は、整数ビットは1つしか持つことができない、10進数ビットは2を持って、私が入力した割引額を追加するときに90、90.00に変換され、BigDecimal(4、2)ですので、2つは、エラーが報告さに対応することはできません。
解決策:Mysqlはちょうどデータベース内の対応するテーブルのフィールドの長さのプロパティ値を変更し、Hibernateだけでなく、データベースを変更する必要がありますが、また、エンティティクラスの対応するフィールドのプロパティアノテーション。