Метод JdbcTemplate.query не поддерживает порядок следования разделенных запятыми строк в списке - PullRequest
0 голосов
/ 05 февраля 2020

Я агрегировал количество строк, используя xmlagg в Oracle DB таким образом, что после агрегирования 445614935 DOB идентификатора также находится на первом месте в столбце Person_DOB и то же самое для других идентификаторов. Но когда я получаю эту строку в java с использованием JdbcTemplate, порядок значений обоих столбцов не поддерживается. Кажется, он сортируется. Я хочу получить данные в том же порядке в списке, в котором они отображаются в БД.

Запрос, используемый для агрегирования по person_id:

SELECT   rtrim(xmlagg(Xmlelement(e,person_id,',').extract('//text()') order BY person_id).getclobval(),',') AS person_id,
environment,
     rtrim(xmlagg(xmlelement(e,person_dob,',').extract('//text()') ORDER BY 
person_id).getclobval(),',')     AS person_dob 
FROM     ip_co_wr2_usr.person_details
WHERE    status='RFS' 
 GROUP BY environment, 
    ;

Ожидание после запуска этот запрос состоит в том, чтобы получить person_id и DOB будут разделены символом ",", поддерживающим их порядок отношений, что также происходит. P1, P2 -> Persion Id и dob_p1, dob_p2 -> DOB о людях

Но когда мы пытаемся отобразить эту строку в классе Person Pojo с использованием JdbcTemplate, атрибут person_id приходит как "P1, P2 "но атрибут dob приходит как" dob_p2, dob_p1 ". Это должно быть "dob_p1, dob_p2"

  List<Person> triggersList = coJdbcTemplate.query(queryForTrigger,
                new BeanPropertyRowMapper<Person>(
                        Person.class));

enter image description here

...