前提・実現したいこと
MySQL+SpringMVC(NamedParameterJdbcTemplate+RowMapper)で資産貸出の申請機能を実装しようとしています。
貸出期間のStart、EndをDate型のカラムで定義して、Spring側ではLocalDateで受け取りたいです。
同じModelを使用してデータの登録はできているのですが、参照する際に型変換ができていないようなエラーが出ます。
発生している問題・エラーメッセージ
Failed to convert property value of type 'java.sql.Date' to required type 'java.time.LocalDate' for property 'start'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.sql.Date] to required type [java.time.LocalDate] for property 'start': no matching editors or conversion strategy found 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
該当のソースコード(抜粋)
Modelの定義(AssetApplication.java)
java
1import java.time.LocalDate; 2import org.springframework.format.annotation.DateTimeFormat; 3 4import com.fasterxml.jackson.annotation.JsonInclude; 5 6import lombok.Getter; 7import lombok.Setter; 8 9@Getter 10@Setter 11@JsonInclude(JsonInclude.Include.NON_EMPTY) 12public class AssetApplication { 13 /** id */ 14 private int id; 15 /** 利用開始日 */ 16 @DateTimeFormat(pattern="yyyy-MM-dd") 17 private LocalDate start; 18 /** 返却日 */ 19 @DateTimeFormat(pattern="yyyy-MM-dd") 20 private LocalDate end; 21 /** 利用目的 */ 22 private String purpose; 23}
SQL実行箇所
java
1 private NamedParameterJdbcTemplate jdbcTemplate; 2 3 public AssetDAOImpl(DataSource dataSource) { 4 jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); 5 } 6 7 @Override 8 public List<AssetApplication> getApprovalListByUserID(int userId) { 9 String sql = 10 "SELECT " + 11 " app.ID " + 12 " , app.Start " + 13 " , app.End " + 14 " , app.Purpose " + 15 "FROM " + 16 " asset_applications app " + 17 "WHERE " + 18 " app.Status = 0 " + 19 " AND users.UserID = :userId " + 20 "ORDER BY " + 21 " app.CreatedAt "; 22 RowMapper<AssetApplication> rowMapper = new BeanPropertyRowMapper<AssetApplication>(AssetApplication.class); 23 Map<String,Object> paramMap = new HashMap<String,Object>(); 24 paramMap.put("userId", userId); 25 List<AssetApplication> list = jdbcTemplate.query(sql, paramMap, rowMapper); 26 27 return list; 28 }
試したこと
1.MySQLのDate型をDateTime型に変えてみる
2.ModelのLocalDateをLocalDateTimeに変えてみる(1と組み合わせ)
⇒変化なし
3.DateTimeFormatをコメントアウトしてみる
⇒変化なし
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。