Установка значения параметра оператора SQL неправильно заменяется значением - PullRequest
0 голосов
/ 26 февраля 2020

Я создаю SQL запрос в моем Java коде следующим образом:

return "where 1 = 1" +
        (!isNullOrEmpty(model.getAccount()) ? " and a.accounts ->> 'id' = :id " : "") +

Мне нужно изменить форму с a.accounts ->> 'id' = ? на a.accounts @> '{"id": "XXXX"}'

Так что я пробовал:

 return "where 1 = 1" +
                (!isNullOrEmpty(search.getAccount()) ? " and a.accounts @> '{\"id\": \":id\"}' " : "") +

но это не заменяет параметр id.

Может кто-нибудь помочь с тем, что я делаю неправильно?

1 Ответ

0 голосов
/ 26 февраля 2020

Я пробовал это, и это работает:

public List<Person> findWithContains(int id) {

    Map<String, Object> params = new HashMap<>();
    params.put("accounts", "{ \"id\": " + id + " }");

    return template.query(
            "select * from people where accounts @> CAST(:accounts as jsonb)", 
            params,
            new PersonRowMapper());
}
...