前提・実現したいこと
個人で、SpringBoot,Thymeleaf,H2-DataBase,JDBCTemplateを使った基本的なCRUD機能を実装したアプリケーションを作っています。
その中に画面上で登録した情報をテーブル一覧表示させるセクションがあるのですが、
ここに意図しない複数のレコードが表示されてしまう状態が発生しており、これを修正したいです。
ローカルにデータファイルを作り、そこにデータを保存して永続化しようとしている作業の中で発生しました。
今の状態(一回登録ボタンを押すと、同一のデータが何個も出てくる)
この症状はアプリ再起動時(STSの停止ボタンを押してから再び実行した時)に現れます。
初回起動時はデータはひとつずつ反映されていくので、問題ありません。
発生している問題・エラーメッセージ
編集ボタンを押すと、IncorrectResultSizeDataAccessExceptionが出ているのがわかります。
ただresultSizeがなぜ増えてしまっているのかがわかりません。
This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Jul 28 12:04:10 JST 2021 There was an unexpected error (type=Internal Server Error, status=500). Incorrect result size: expected 1, actual 6 org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 6
該当のソースコード
application.ymlに書いたh2-detabaseの設定です。
hogefiledb.mv.dbが生成されます。
spring: datasource: url: jdbc:h2:file:./hogefiledb driverClassName: org.h2.Driver username: sa password: h2.console.enabled: true
試したこと
一番左端の数字はAUTO_INCREMENTで取得したidですが、これがリセットされていないのが関係ある?
と考えて調べた結果、ALTER TABLE テーブル名
AUTO_INCREMENT = 1の記述を加えて削除メソッドの後に追加してみましたが、変化なし。
@Override public void resetNum(DailyReport dailyReport) { jdbcTemplate.update("ALTER TABLE `DAILYREPORT` AUTO_INCREMENT = 1"); }
これはH2consoleを開いてみたところですが、データが重複している様子はありませんでした。
ネットで調べてもこの問題と類似の事例が見つけられなかったので質問させて頂きました。
データ永続化を行う前はこの問題は発生していなかったので、ソースコードに根本的な欠陥があるわけではない、と今のところ仮定してソースコードは省略しておりますが、見直すべきポイントのヒントを頂ければと思います。
補足情報(FW/ツールのバージョンなど)
Spring Tool Suits 4 4.10.0.RELEASE
java11
H2dataBase
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。