0

DAOクラスで返されたサブセット:

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

ソートされることが期待されていましたが、デバッグモードでは、アプリケーションは誤ったサブセットを返します-ソートされていません。

一方、Oracle Sql DeveloperでsqlForDataQueryallを使用して実行すると、ソートされた正しいサブセットが返されます。paramsForList

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

クエリが正しく実行されていないように見えますが、例外はスローされていません。

問題の範囲について何か考えがありますか?

ありがとうございました。

4

1 に答える 1

1

これを見てください

短編小説:PreparedStatementで順序付けするための列としてパラメーターを使用することはできず、jdbcTemplateは内部でプリペアドステートメントを使用します。

于 2011-05-13T13:11:33.413 に答える