IllegalArgumentException:Can not set java.util.Date field com.example.entity.User.registerDate to null value出现这个异常是在Dao层设置实体类时间类型字段赋值的时候,实体类时间类型博主用的都 java.util.Date类型,MySQL数据库用的是datetime类型然后通过debug发现MySQL datetime类型对应Java LocalDateTime类型。百度研究了一下,可能是MySQL8驱动引入的问题MySQL8之前直接使用 java.util.Date 存值是没问题的。
解决方法有两个
1、直接使用LocalDateTime类型存储
2、需要判断转换类型,使用java.util.Date或java.sql.Timestamp存储
if (object != null) {
String type = object.getClass().getName();
if ("java.time.LocalDateTime".equalsIgnoreCase(type)) {
Timestamp timestamp = Timestamp.valueOf(((LocalDateTime) object));
object = timestamp;
}
}
java.sql.Timestamp类型继承java.util.Date类型可以兼容