JDBCTemplate не выбирает записи более 1500 - PullRequest
0 голосов
/ 06 марта 2011

Я использую 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;

                    }
                };

1 Ответ

0 голосов
/ 06 марта 2011

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

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

OPTIMIZE FOR n ROWS
...