JDBCTemplate не извлекает записи более 1500

Я использую JDBCTemplate для выборки записей... в моей таблице 46 000 строк, которые я хочу обернуть в объект пользовательского типа с помощью rowmapper.

Но когда я пытаюсь выполнить код ниже, он показывает «Выполнение SQL-запроса [Выберите USER_ID, Desc из Q7.USERBSC_INFO, где STAT_CD = 'ACTIVE']», и после этого ничего не произошло. Я ждал 15 минут, но все равно ничего не показал. Но приложение все еще работает... не исключение

Я использую драйверы JCC DB2, это мейнфрейм DB2.

Но когда я запускаю запрос только для 1500 записей, он работает нормально... есть ли какие-либо ограничения для получения записей?

Когда я запускаю тот же запрос внутри клиента AQT, он работает нормально...

public List<usr> getusr() {
        List<usr> list = new ArrayList<usr>();
        String query = "Select USER_ID,Desc from Q7.USERBSC_INFO where STAT_CD='ACTIVE'";

list = getJdbcTemplate().query(query, DB2RowMapper.mUsrInfo);

        return list;
    }

RowMapper

 public static RowMapper mUsrInfo = new RowMapper()
                {
                    public Object mapRow(ResultSet rs, int rowNum) throws SQLException
                    {

                        Usr usr=new Usr();
                        usr.setUsrId(rs.getString("USER_ID"));
                        usr.setDesc(rs.getString("DESC"));
                        return usr;

                    }
                };

person Nits    schedule 06.03.2011    source источник
comment
В течение этих 15 минут работы - есть ли загрузка процессора? Можете ли вы запустить код под отладчиком, например. из IDE?   -  person Piotr Findeisen    schedule 06.03.2011
comment
Я заметил одну вещь: когда я пытаюсь получить запись до 1637, она работает нормально, но если я использую 1638, она дает следующую ошибку: com.ibm.db2.jcc.c.DisconnectException: длина dss не равна 0 в конце разбора цепочки того же идентификатора   -  person Nits    schedule 06.03.2011


Ответы (1)


Вы можете ограничить количество записей в Spring Jdbc Template (используя параметры maxRows), но не думайте, что здесь это так. Я предполагаю, что отсутствие записей () 46000, которые извлекаются, является причиной этой задержки...

Вы можете либо попробовать оптимизировать свой запрос, либо попробовать использовать это предложение в конце, может быть, это может помочь.

OPTIMIZE FOR n ROWS
person Vipin    schedule 06.03.2011
comment
Когда я пытаюсь получить 1638 записей, он говорит об ошибке ниже: com.ibm.db2.jcc.c.DisconnectException: длина dss не равна 0 в конце синтаксического анализа цепочки одного и того же идентификатора. - person Nits; 06.03.2011