0
我有一個ENUMMyBatis的 - 由那裏枚舉爲序
private OrderStatus status;
和SQL
<select id="getOrder" parameterType="map" resultMap="OrderMap">
SELECT * FROM Order WHERE
status = #{status, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}
</select>
和服務
@Override
public Order getOrder(OrderStatus status) {
return this.orderMapper.getOrder(status);
}
在插入或更新SQL,工程類選擇數據很好,但在選擇發生錯誤
引發異常[嵌套異常爲org.apache.ibatis.type.TypeException:失敗,調用處理程序類org.apache.ibatis.type.EnumOrdinalTypeHandler的構造函數],其根本原因爲 java.lang.IllegalArgumentException:對象不表示枚舉類型。
我可以使用status.ordinal()將參數傳遞給SQL,但它沒有任何意義。
任何提示讚賞
我有同樣的問題,因爲你,我debuged,發現這個:MyBatis的實例EnumOrdinalTypeHandler與構造函數org.apache.ibatis.type.EnumOrdinalTypeHandler#EnumOrdinalTypeHandler(類類型)。而參數「type」是java.lang.Object,這是不正確的。在你的情況下,參數「type」應該是OrderStatus.class而我發現了一個臨時解決方案:將「where status = ****」改爲「在(****)中的狀態」。這個對我有用!我認爲這是一個mybatis的錯誤。我太忙,無法報告。 (我必須工作到每天22:00,T_T)請您向mybatis團隊報告嗎? –
Aray