У меня есть JSON в моем Postgres БД, это в таблице под названием site_content
, таблица имеет два ряда, id
и content
, в content
где я храню JSON. Я хочу, чтобы найти игрока с его идентификатором, мои игроки хранятся под ключом series
, так как это ключ, необходимый для создания моих диаграмм от JSON.запрос JSON в Postgres
Вот запрос я в настоящее время с помощью:
Blocking.get {
sql.firstRow("""SELECT * from site_content where content -> 'playersContainer' -> 'series' -> 'id' = ${id} """)
}.map { row ->
log.info("row is: ${row}")
if (row) {
objectMapper.readValue(row.getAt(0).toString(), Player)
}
}
}
Однако я получаю обратно эту ошибку:
org.postgresql.util.PSQLException: ERROR: operator does not exist: json = character varying Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Вот пример моего JSON:
"id": "${ID}",
"team": {
"id": "123",
"name": "Shire Soldiers"
},
"playersContainer": {
"series": [
{
"id": "1",
"name": "Nick",
"teamName": "Shire Soldiers",
"ratings": [
1,
5,
6,
9
],
"assists": 17,
"manOfTheMatches": 20,
"cleanSheets": 1,
"data": [
3,
2,
3,
5,
6
],
"totalGoals": 19
},
{
"id": "2",
"name": "Pasty",
"teamName": "Shire Soldiers",
"ratings": [
6,
8,
9,
10
],
"assists": 25,
"manOfTheMatches": 32,
"cleanSheets": 2,
"data": [
3,
5,
7,
9,
10
],
"totalGoals": 24
}
]
}
I я использую Groovy для этого проекта, но я думаю, что это просто общий синтаксис postgres JSON, с которым у меня возникают проблемы.
Спасибо за ответ но я получаю эту ошибку ОШИБКА: оператор не существует: @ JSON> неизвестно –
Я использую Postgres 9,4 –
я бросил мое содержание jsonb вместо JSON и он работал, спасибо! –