运算符不存在:整数=字符变化

我因例外而失去理智,需要您的帮助。


我已将查询写入映射器,该映射器根据以下两个条件从表中检索记录:列表中的“位置”和另一个条件中的“技能”。


因此,基本上,如果用户选择了多个技能来查找,则查询将恢复所有具有这些技能的记录...


如此简单却又如此曲折,因为我正在使用两个foreach ...一个有效,而另一个无效...


这是查询:


<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)抛出异常。


问题在于先前的foreach(filter.locationSelected)就像一个超级按钮一样工作。唯一的区别是技能是整数列表,而locationSelected是字符串列表。但这不应该是原因,因为我什至尝试使用String列表,但问题仍然存在...


RS.ID_SKILL是一个int4,因此,只要我的逻辑正确(如果我不发疯),我基本上是在检查int是否在整数列表中............


但是仍然有BadSQLGrammarException声明:运算符不存在:整数=字符变化提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。


我究竟做错了什么?!


救我!


编辑:S.“ ID_LOCATION”相反是一个varchar,所以我正在检查其内容是否在字符串列表中...基于此,唯一的逻辑结论是mybatis'foreach不适用于整数列表..... 我不知道.....


回首忆惘然
浏览 170回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java