SpringBoot-одиночное значение для нескольких параметров, используя PostgreSQL - PullRequest
0 голосов
/ 20 апреля 2020

PostgreSQL Запрос

select date,count(*) from table1 
where (DATE_PART('day', current_date::timestamp - table1.date::timestamp )) 
<(SELECT value from keyvaluepair where priority='Important')
and priority = 'Important' group by date
order by date

Я буду звонить из API, где

http://localhost:8080/get/getDates?priority=Important

Я буду проходить как? в обоих местах, как показано

select date,count(*) from table1 
    where (DATE_PART('day', current_date::timestamp - table1.date::timestamp)) 
    <(SELECT value from keyvaluepair where priority=?)
    and priority = ? group by date
    order by date

Я получаю ошибку, подобную этой

No value specified for parameter 2.; nested exception is org.postgresql.util.PSQLException: No value specified for parameter 2.
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback;

В java Я просто получаю дату и количество данных этого запроса.

public Map<String,Object> getDates(String priority) {
        Map<String,Object> map = new Map<String,Object>();
        List<Object> count = new ArrayList<Object>();
        List<Object> date = new ArrayList<Object>();
        try {

            jdbcTemplate.query(query, new Object[] { priority }, new RowMapper<Object>() {

                @Override
                public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
                    date.add(rs.getString("date"));
                    count.add(rs.getInt("count"));
                    return null;
                }

            });
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        return map;
    }

Как дать приоритет один раз и использовать его дважды в запросе?

1 Ответ

0 голосов
/ 20 апреля 2020
select t1.date,count(*) from table1 t1 
where (DATE_PART('day', current_date::timestamp - t1.date::timestamp )) 
<(SELECT value from keyvaluepair k where k.priority=t1.priority)
and t1.priority = 'Important' group by t1.date
order by t1.date

Эти изменения в запросе помогли мне устранить ошибку, которая у меня была, как показано Не указано значение для параметра 2 .; вложенное исключение: org. postgresql .util.PSQLException: значение не указано для параметра 2. org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; , где имена двух столбцов таблицы совпадают, и я должен передать значение один раз для всех параметры, указанные в ссылке, показаны ниже

http://localhost:8080/get/getDates?priority=Important

select t1.date,count(*) from table1 t1 
    where (DATE_PART('day', current_date::timestamp - t1.date::timestamp )) 
    <(SELECT value from keyvaluepair k where k.priority=t1.priority)
    and t1.priority = ? group by t1.date
    order by t1.date

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...