background:
對接AML系統,日間實時需要送交易對手要素過去(目前主要是交易對手全名),夜間需要將歷史交易送AML進行回溯,交互方式是文件。文件要素為日期、對手類型、對手名、交易流水之類。
設置對送AML的文件設計表機構,除了交易明細的機構,再設計了一個記錄每日發送情況的表,主鍵為日期,記錄對接的狀態。
主鍵日期設置為整型(坑的開始),在POJO里設置為int類型,是MYSQL中的類型選用了int類型(smallint無法支持99991231),整型比較較快,比string好一些。
另外用了4個時間字段,記錄文件的創建上傳時間。
然后應用mybatis的?selectByPrimaryKey 傳入主鍵(不論是string還是int)都會提示無法org.apache.ibatis.type.TypeException: Could not set parameters for mapping,報錯誤導嚴重:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='crtStTime', mode=IN, javaType=class java.util.Date, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #5 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
另外一個date字段,嘗試在xml中進行指定JdbcType類型是否不正確,無法支持null值的反向,一直在想是否另外一個字段有問題,AI問了好久,都無法定位問題。
最后發現是mybatis對int無法支持,需要用Integer 進行對應。