搜尋

首頁  >  問答  >  主體

java - Mybatis查詢資料庫時出現查詢getInt()​​的錯誤

我數據庫表的id是varchar類型,而已這條數據也是項目插入到數據庫的,但是在後麵查詢的時候就出現了一下錯誤。

严重: Servlet.service() for servlet [SpringMVC] in context with path [/cims-ssm] threw exception [Request processing failed; nested exception is org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'id' from result set.  Cause: java.sql.SQLException: Invalid value for getInt() - 'x41D6z93'
; SQL []; Invalid value for getInt() - 'x41D6z93'; nested exception is java.sql.SQLException: Invalid value for getInt() - 'x41D6z93'] with root cause
java.sql.SQLException: Invalid value for getInt() - 'x41D6z93'

這是錯誤信息,以下是相關代碼


這是查詢映射代碼

我代碼在數據庫裏就能查詢出來

望各位看看
對了 model中 club中的id屬性是string的

ringa_leeringa_lee2804 天前924

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑2017-04-18 10:58:22

    mapping的問題:

    <resultMap id="resultClubType" type="com.uiyllong.cims.model.ClubType">
        <id column="id" jdbcType="INTEGER" property="id" />
        <!-- 省略 -->
    </resultMap>
    <resultMap id="resultClub" type="com.uiyllong.cims.model.Club">
        <id column="id" jdbcType="VARCHAR" property="id" />
        <!-- 省略 -->
        <association column="club_type_id" jdbcType="INTEGER"
            property="clubType" javaType="com.uiyllong.cims.model.ClubType"
            resultMap="resultClubType" />
    </resultMap>

    resultClub和resultClubType的id属性对应的列名都是id,而其中一個的型別是int。

    sql的問題(記得以後貼問題把程式碼貼上來,貼截圖讓人家怎麼拿你程式碼試,手敲嗎?):

    select club_t.id, ...
    club_type_t.id
    ....

    這個查詢結果有兩列ID

    解決方法很簡單,把 club_type_t 欄位設定別名,例如加上前綴:

    select club_t.id, ...
    club_type_t.id ct_id, club_type_t.typeName ct_type_name

    利用mybatis的columnPrefix:

    <association property="clubType" 
      columnPrefix="ct_"
      notNullColumn="ct_id"
      resultMap="resultClubType" />

    回覆
    0
  • 取消回覆