一、問題分析
問題
Error querying database. Cause: java.sql.SQLException: Value'0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
分析
datetime數據庫中可為空,其默認值為“0000-00-0000:00:00”,因MySQL的時間類型datetime范圍是1000-01-01 00:00:00 到 9999-12-31 23:59:59,所以報錯。
二、解決方案
1、在配置數據庫連接的url上添加zeroDateTimeBehavior的配置。
示例:
修改前jdbc配置:
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8
修改后jdbc配置 :
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull
2、zeroDateTimeBehavior的所有配置:
- 沒有配置。
拋出異常如上所示
- zeroDateTimeBehavior=round
返回值為 0001-01-01 00:00:00.0
- zeroDateTimeBehavior=convertToNull
返回值為 null
3、注意事項
如果是xml配置,需要轉義:
| 轉義符號 | 原符號 | 含義 |
|---|---|---|
| < | < | 小於號 |
| > | > | 大於號 |
| & | & | 和 |
| ' | ’ | 單引號 |
| " | " | 雙引號 |
