Ошибка обновления базы данных!таблица или представление не существует - PullRequest
0 голосов
/ 22 мая 2018

У меня есть этот запрос

<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>

запрос выполняется правильно, а обновление выполняется

У меня вопрос: почему иногда обновление выполняется правильно, если у меня есть и ключ в критериях, а иногда я получаю эту ошибку?

1 Ответ

0 голосов
/ 01 июня 2018

Две вещи:

  • Удалите избыточное число }.

  • Приставьте каждое условие к AND.Тег всегда удаляет первый.

    AND DISPLAY_ID = # {crit.displayId} и ID = # {crit.id}

...