前提・実現したいこと
閲覧いただき、ありがとうございます。
Eclipse,Springを使ってJAVAの勉強をしている(超)初心者です。
現在、マスタメンテナンス画面の更新処理を作成中ですが、更新ボタン
押下時に下記のようなエラーが発生してしまいます。
RecordManager.javaのjdbcTemplate.update命令がうまくいっていないのと、
そのjdbcTemplate.updateの戻り値(int)をAddressBookController.java側で
Employee型で受けようとしているからうまくいかないのかなと思っている
のですが、ではどのように実装すべきなのかが検討つかない状況です。
ご教示いただけないでしょうか。
発生している問題・エラーメッセージ
nested exception is org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [update unit02.addressbook set name = ? , tel = ?, address = ? where id = ? ]; Invalid argument value: java.io.NotSerializableException; nested exception is java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
該当のソースコード
AddressBookController.java
java
1 @RequestMapping(params = "reflection") 2 public String reflection(AddressBookForm form, Model model) { 3 recordManager.updateEmployee(form.getId(), form.getName(), form.getPhone(), form.getAddress()); 4 if (employee != null) { 5 form.setName(employee.getName()); 6 form.setPhone(employee.getPhone()); 7 form.setAddress(employee.getAddress()); 8 model.addAttribute("message", UPDMSG2); 9 return INIT; 10 } else { 11 model.addAttribute("message", ERRMSG2); 12 return INIT; 13 } 14 } 15
RecordManager.java
java
1 public int updateEmployee(String id,String name, String phone, String address){ 2 System.out.println("para1=" + id + name + phone + address); 3 try{ 4 return jdbcTemplate.update("update unit02.addressbook set name = ? , tel = ?, address = ? where id = ? ", 5 new Object[]{ name , phone , address, id }, 6 new RowMapper<Employee>() { 7 @Override 8 public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { 9 System.out.println("para2=" + rs + rowNum); 10 Employee employee = new Employee("","","",""); 11 employee.setId(rs.getString("id")); 12 employee.setName(rs.getString("name")); 13 employee.setPhone(rs.getString("tel")); 14 employee.setAddress(rs.getString("address")); 15 return employee; 16 } 17 }); 18 } catch (IncorrectResultSizeDataAccessException e) { 19 System.out.println("data incorrect ERR"); 20 return 0; 21 } 22 } 23
試したこと
RecordManager.javaの
System.out.println("para1=" + id + name + phone + address);
は正常値が表示されています。
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/06/06 08:10