1. 程式人生 > >mybatis查詢的java.lang.ClassCastException

mybatis查詢的java.lang.ClassCastException

問題來源:表中有text欄位,使用mybatis生成工具後生成該表生成實體類時會多一個檔案會,比如生成一個User實體類會多一個UserWithBlobs,多出的這個實體類中的變數就是表中的型別為text的欄位而實體類User中就沒型別為text欄位的變數,UserWithBlobs繼承User,而對於的mapper.java和mapper.xml檔案的查詢也是返回UserWithBlobs,mapper.xml中的查詢看著也完全沒毛病,比如說UserWithBlobs selectByPrimaryKey(String id ); 在使用這個方法時就會報java.lang.ClassCastException異常,User 不能轉為 UserWithBlobs;換成User selectByPrimaryKey(String id ); 就不報錯了,所以原因就是text型別有毒。。。。


解決辦法:生成時不要生成UserWithBlobs這個實體類,在使用mybatis生成工具生成表中有型別為text的實體類時要在table中加點東西
例如上面user表中的a欄位為text型別

<table domainObjectName="User" tableName="user">  
    <columnOverride column="a" javaType="java.lang.String" jdbcType="VARCHAR" />  
</table>  

這樣就不會生成UserWithBlobs了,後面查詢就不會坑了。。。
解決辦法網上找的:

http://www.cnblogs.com/grey-wolf/p/7238780.html