我因例外而失去理智,需要您的幫助。我已將查詢(xún)寫(xiě)入映射器,該映射器根據(jù)以下兩個(gè)條件從表中檢索記錄:列表中的“位置”和另一個(gè)條件中的“技能”。因此,基本上,如果用戶選擇了多個(gè)技能來(lái)查找,則查詢(xún)將恢復(fù)所有具有這些技能的記錄...如此簡(jiǎn)單卻又如此曲折,因?yàn)槲艺谑褂脙蓚€(gè)foreach ...一個(gè)有效,而另一個(gè)無(wú)效...這是查詢(xún):<select id="selectAllByFilter" resultMap="BaseResultMap">select distinct<include refid="Base_Column_List" /><include refid="Join_Column_List" />from "ANAG_REQS" A JOIN "ANAG_REQS_RISORSE" R ON A."ID_REQS_RDA"=R."ID_REQS" LEFT JOIN "SEC_USER" U ON R."ID_USER"=U."ID"LEFT JOIN "USER_LOCATION" S ON S."ID_REQS_USER"= R."ID_REQS"LEFT JOIN "USER_SKILL" RS ON RS."ID_REQS_USER"= R."ID_REQS"LEFT JOIN "USER_CUSTOMER" RC ON RC."ID_REQS"= R."ID_REQS"WHERE 1=1<if test="filter.idREQS != null"> AND A."ID_REQS_RDA" = #{filter.idREQS,jdbcType=INTEGER}</if><if test="filter.states != null and filter.states.size()>0 and not statesuspended"> AND A."state_RDA" IN <foreach item="item" collection="filter.states" index="index" open="(" separator="," close=")"> #{item} </foreach> AND R."state" != 'suspended'</if><if test="filter.states != null and filter.states.size()>0 and statesuspended"> AND (A."state_RDA" IN <foreach item="item" collection="filter.states" index="index" open="(" separator="," close=")"> #{item} </foreach>最新的foreach(filter.skills)拋出異常。問(wèn)題在于先前的foreach(filter.locationSelected)就像一個(gè)超級(jí)按鈕一樣工作。唯一的區(qū)別是技能是整數(shù)列表,而locationSelected是字符串列表。但這不應(yīng)該是原因,因?yàn)槲沂仓羾L試使用String列表,但問(wèn)題仍然存在...RS.ID_SKILL是一個(gè)int4,因此,只要我的邏輯正確(如果我不發(fā)瘋),我基本上是在檢查int是否在整數(shù)列表中............但是仍然有BadSQLGrammarException聲明:運(yùn)算符不存在:整數(shù)=字符變化提示:沒(méi)有運(yùn)算符匹配給定的名稱(chēng)和參數(shù)類(lèi)型。您可能需要添加顯式類(lèi)型轉(zhuǎn)換。我究竟做錯(cuò)了什么?!救我!編輯:S.“ ID_LOCATION”相反是一個(gè)varchar,所以我正在檢查其內(nèi)容是否在字符串列表中...基于此,唯一的邏輯結(jié)論是mybatis'foreach不適用于整數(shù)列表..... 我不知道.....
添加回答
舉報(bào)
0/150
提交
取消