Я пытаюсь получить некоторые записи из БД, которые соответствуют нескольким условиям (одно из них - поле jsonB). Когда я пытаюсь сделать это в postgres - это работает. Но когда я делаю это из кода Java, я получаю ошибку приведения postgres, и я не знаю, как ее решить.
Сначала я попытался использовать List, затем я создаю строку из этого списка, как в коде ниже,Я пытался преобразовать значения таблиц в jsonB через ":: jsonb" или "to_jsonb ()", но это не сработало. Ошибка: «PSQLException: ОШИБКА: оператор не существует: jsonb = символ меняется»
ArrayList tableId = new ArrayList(){
{
add(1);
add(2);
}
};
String tables = tableIds.stream().map(id -> "\'" + String.valueOf(id) + "\'").collect(Collectors.joining(","));
String sql = "SELECT id, date, table_info where date = :date and table_info -> 'id' in(:tableIds)";
RawSql rawSql = RawSqlBuilder
.parse(sql)
.create();
Query<Booking> query = Ebean.find(Booking.class);
bookings = query.setRawSql(rawSql)
.setParameter("date", date )
.setParameter("tableIds", tableIds)
.findSet();
Код SQL
select * from Booking
where date = '2019-11-07' and table_info -> 'id' in('1', '2');
Я хочу получить все записи по дате и гдеполе "id" в table_info равно списку tableId