“夏令时”的版本间的差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
| Jihongchang(讨论 | 贡献)  (建立内容为“一次生产环境遇到的问题”的新页面) | Jihongchang(讨论 | 贡献)  | ||
| 第1行: | 第1行: | ||
| − | 一次生产环境遇到的问题 | + | === 一次生产环境遇到的问题 === | 
| + | 现象是程序运行过程中查询用户的数据抛异常:<syntaxhighlight lang="java"> | ||
| + | java.lang.IllegalArgumentException: HOUR_OF_DAY: 0 -> 1 | ||
| + | |||
| + | 	at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2829) | ||
| + | 	at java.util.Calendar.updateTime(Calendar.java:3395) | ||
| + | 	at java.util.Calendar.getTimeInMillis(Calendar.java:1782) | ||
| + | </syntaxhighlight>进一步定位发现只要查询一条出生日期是 1941-03-15 的数据,程序就会抛这个异常,但查别的数据都没有问题 | ||
| + | |||
| + | === 具体的实现是 === | ||
| + | 表 user 中有一个 date 类型的字段 birth_date,用来存储用户的出生年月日, | ||
| + | |||
| + | 对应 Java 代码中的 User 类中声明的 java.util.Date 类型的 birthDate,然后应用了 Mybatis 执行查询, | ||
| + | |||
| + | 对应的 mapper 映射文件是:<syntaxhighlight lang="xml"> | ||
| + | …… | ||
| + | <resultMap type="User" id="UserResult"> | ||
| + |   …… | ||
| + |   <result property="birthDate" column="birth_date"> | ||
| + |   …… | ||
| + | </resultMap> | ||
| + | …… | ||
| + | <select id="selectUserList" resultMap="UserResult"> | ||
| + |   select * from user | ||
| + | </select> | ||
| + | …… | ||
| + | </syntaxhighlight>大概就是上面这样 | ||
| + | |||
| + | |||
| + | pom.xml 文件中<syntaxhighlight lang="xml"> | ||
| + | <dependency> | ||
| + |   <groupId>com.mysql</groupId> | ||
| + |   <artifactId>mysql-connector-j</artifactId> | ||
| + |   <version>8.2.0</version> | ||
| + | </dependency> | ||
| + | |||
| + | <!-- | ||
| + | <dependency> | ||
| + |   <groupId>mysql</groupId> | ||
| + |   <artifactId>mysql-connector-java</artifactId> | ||
| + |   <version>8.0.28</version> | ||
| + | </dependency> | ||
| + | |||
| + | <dependency> | ||
| + |   <groupId>mysql</groupId> | ||
| + |   <artifactId>mysql-connector-java</artifactId> | ||
| + |   <version>8.0.23</version> | ||
| + | </dependency> | ||
| + | |||
| + | <dependency> | ||
| + |   <groupId>mysql</groupId> | ||
| + |   <artifactId>mysql-connector-java</artifactId> | ||
| + |   <version>8.0.21</version> | ||
| + | </dependency> | ||
| + | --> | ||
| + | </syntaxhighlight> | ||
2025年8月19日 (二) 02:10的版本
一次生产环境遇到的问题
现象是程序运行过程中查询用户的数据抛异常:
java.lang.IllegalArgumentException: HOUR_OF_DAY: 0 -> 1
	at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2829)
	at java.util.Calendar.updateTime(Calendar.java:3395)
	at java.util.Calendar.getTimeInMillis(Calendar.java:1782)
进一步定位发现只要查询一条出生日期是 1941-03-15 的数据,程序就会抛这个异常,但查别的数据都没有问题
具体的实现是
表 user 中有一个 date 类型的字段 birth_date,用来存储用户的出生年月日,
对应 Java 代码中的 User 类中声明的 java.util.Date 类型的 birthDate,然后应用了 Mybatis 执行查询,
对应的 mapper 映射文件是:
……
<resultMap type="User" id="UserResult">
  ……
  <result property="birthDate" column="birth_date">
  ……
</resultMap>
……
<select id="selectUserList" resultMap="UserResult">
  select * from user
</select>
……
大概就是上面这样
pom.xml 文件中
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <version>8.2.0</version>
</dependency>
<!--
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.23</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.21</version>
</dependency>
-->