Подмножество, возвращаемое queryForList, неверно, но выполнено в SQL Developer, все в порядке - PullRequest
0 голосов
/ 13 мая 2011

Подмножество возвращено в классе DAO:

List<Map<String, Object>> agreements = getJdbcTemplate().queryForList(sqlForDataQuery.toString(), paramsForList.toArray());

Ожидается, что оно будет отсортировано, но в режиме отладки приложение вернет неправильное подмножество - оно не отсортировано.

С другой стороны,если выполнить sqlForDataQuery со всеми paramsForList в Oracle Sql Developer, то это ожидаемое отсортированное правильное подмножество вернулось.

sqlForDataQuery значение времени выполнения:

SELECT * FROM (SELECT t1.*, ROWNUM rn FROM (SELECT /*+ CHOOSE */ DISTINCT a.avtalenavn, a.kunde_id, a.aktivdato, a.bank_id, a.avtalestatus_id, a.produkt_id, a.avtale_id, p.navn, k.foretaksnr, k.navn AS KUNDENAVN FROM es.avtale a, es.avtale_konto ak, es.kunde k, es.produkt p WHERE a.bank_id = ? AND ak.avtale_id = a.avtale_id AND a.kunde_id = k.kunde_id AND UPPER(a.avtalenavn) LIKE UPPER(('%' || ? || '%')) AND a.produkt_id = p.produkt_id ORDER BY ? ) t1 ) WHERE rn BETWEEN ? AND ? 

paramsForListзначение времени выполнения:

4210, a, AVTALE_ID, 1, 5

Похоже, что запрос выполнен не правильно, но не сгенерировано исключение.

Есть ли у вас какие-либо представления о масштабах проблемы?

Спасибо.

1 Ответ

1 голос
/ 13 мая 2011

Взгляните на this

Короткая история: вы не можете использовать параметры в качестве столбцов для упорядочивания в PreparedStatement, а jdbcTemplate использует готовые операторы под капотом.

...