前提・実現したいこと
SpringBootを持ちいて、DBのレコードの編集を行いたいのですが、saveAndFlushを行った際に、
updateではなくinsertの処理がはしってしまいます。行いたいのはレコードの更新なのですが、追加が行われてしまっている状況です。SpringBootを初めたばかりなので、原因がいまいちつかめずにいます。ご教授いただけますと幸いです。
発生している問題・エラーメッセージ
saveAndFlushを行った際に、新しいデータが追加されてします。
該当のContoroller
@RequestMapping(value = "/updateDeployment", method = RequestMethod.POST) @Transactional(readOnly = false) public ModelAndView update(@ModelAttribute DeploymentEntity deploymentData, ModelAndView mav) { Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // 日時情報を指定フォーマットの文字列で取得 String display = format.format(date); deploymentData.setEdit_date(display); UserEntity loginEmp = (UserEntity) ses.getAttribute("loginEmp"); deploymentData.setEditor_id(loginEmp.getId()); rep.saveAndFlush(deploymentData); return new ModelAndView("redirect:/depTop"); }
該当のThymeleaf
<div class="container my-5"> <div class="mt-5 mb-5"> <!-- タイトル--> <div class="title mb-5"> <h2 class="text-center">部署情報編集</h2> </div> </div> <form class="needs-validation" th:action="@{/updateDeployment}" method="POST" th:object="${deploymentData}"> <div class="mb-3 w-25 mx-auto" style="width: 200px;"> <input type="hidden" name="deployment_id" th:value="*{id}" form="edit"></input> <input type="text" class="form-control" name="deployment_name" th:value="*{deployment_name}"> </div> <div class="invalid-feedback">入力してください</div> <p class="text-center mb-5"> <input type="submit" class="btn btn-primary" value="編集完了"></input> </p> </form> </div>
追加情報
修正依頼いただき誠にありがとうございます。説明不足で申し訳ございません。
repに関しては、
@Autowired
DeploymentRepository rep;
になります。
該当のRepository
@Repository public interface DeploymentRepository extends JpaRepository<DeploymentEntity, Long> { public Optional<DeploymentEntity> findById(int i); @Query(value = "SELECT * FROM m_deployment WHERE delete_flag=0", nativeQuery = true) ArrayList<DeploymentEntity> findDeploymentByDeleteFlag(); public Optional<DeploymentEntity> findByDeploymentName(String depNmae); }
テーブルDDL
create table m_deployment (
deployment_id INT AUTO_INCREMENT not null comment '部署ID'
, deployment_name VARCHAR(50) UNIQUE not null comment '部署名'
, register_date DATETIME comment '登録日'
, register_id INT comment '登録者ID'
, edit_date DATETIME comment '編集日'
, editer_id INT comment '編集者ID'
, delete_flag INT comment '削除フラグ'
, delete_date DATETIME comment '削除日'
, deleter_id INT comment '削除者ID'
, sort_num INT comment '並び順'
, constraint m_deployment_PKC primary key (deployment_id)
) comment '部署テーブル' ;
試したこと
主キーとしているidに問題があると考え、<input type="hidden" name="deployment_id" th:value="*{id}" form="edit">を追加などしましたが、うまくいきませんでした。
なにとぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー