У меня есть этот запрос
<update id="updateRow">
update
ROW
set
DISPLAY_ID = #{displayId}
<where>
<include refid="rowCriteria" />
</where>
</update>
<sql id="rowCriteria">
<if test="criteria.displayId} != null">
DISPLAY_ID=#{criteria.displayId}
</if>
<if test="criteria.id != null">
and ID=#{criteria.id}
</if>
</sql>
и где выполняется
Preparing: update ROW set DISPLAY_ID = ? WHERE ID=?
Parameters: 72312(Long), 72991(Long)
я получаю эту ошибку
Ошибка может включать defaultParameterMap
Произошла ошибка при настройке параметров
SQL: обновление ROW установлено DISPLAY_ID =?WHERE ID =?
Причина: java.sql.SQLSyntaxErrorException: ORA-00942: таблица или представление не существует
, но если я удалю 'и' из идентификатора критерия
<sql id="rowCriteria">
<if test="criteria.displayId} != null">
DISPLAY_ID=#{criteria.displayId}
</if>
<if test="criteria.id != null">
ID=#{criteria.id}
</if>
</sql>
запрос выполняется правильно, а обновление выполняется
У меня вопрос: почему иногда обновление выполняется правильно, если у меня есть и ключ в критериях, а иногда я получаю эту ошибку?