Хотим получить запрос выполняющийся в поисковой форме (Query) элементе
для этого переопределяем метод executeQueryForCollection объекта ViewObjectImpl
protected void executeQueryForCollection(Object qc, Object[] params,
int numUserParams) {
System.out.println("--- numUserParams "+numUserParams);
System.out.println("--- getQuery "+getQuery());
for(int i=0;i<numUserParams;i++) {
Object[] o = (Object[])params[i];
System.err.println(o[0] + " " + o[1]);
}
super.executeQueryForCollection(qc, params, numUserParams);
}
Получаем что-то такое:
SELECT * FROM
(SELECT /*+ FIRST_ROWS */ IQ.*, ROWNUM AS Z_R_N FROM
(SELECT TrInOperationsEO.ID, TrInOperationsEO.INOUT_DATA_LOG_ID,
...
TrInOperationsEO.CLIENT_CODE
FROM TR_IN_OPERATIONS TrInOperationsEO
WHERE (ROWNUM <= :bndMaxRows)
AND ( ( ( (TrInOperationsEO.ID = :vc_temp_1 )
AND (TrInOperationsEO.INOUT_DATA_LOG_ID = :vc_temp_2 ) ) ) ) ORDER BY id DESC
) IQ WHERE ROWNUM < :Bind_RangePage_High
) WHERE Z_R_N > :Bind_RangePage_Low
Надо заметить, что параметры Bind_RangePage_High, Bind_RangePage_Low возникают из постраничного вывода VO, остальные имеют имена vc_temp_1, vc_temp_2, и т.д. в соответствии с тем, какие параметры отмечены в форме.
Список параметров выглядит примерно так:
bndMaxRows 100
vc_temp_1 15613
vc_temp_2 23
vc_temp_3 R
Первая переменная bndMaxRows добавлена в запрос VO вручную, остальные формируются по полям автоматически.
Комментариев нет:
Отправить комментарий