Я использую таблицу PostgreSQL agents
.В нем есть столбец zip_codes character(5)[]
, в котором хранятся почтовые индексы областей, за которые отвечают агенты.
В нем хранится agent1
с почтовыми индексами {11111,22222}
и agent2
с почтовым индексом {33333}
.
Я хочу найти всех агентов, которые отвечают за особую область,
Без Hibernate это просто: SELECT * FROM agents WHERE '11111' = ANY (zip_codes)
возвращает agent1
.
Но как мне сделать это с HQL?Он не знает any
.Но если я использую in
вместо этого, я получу неправильные результаты: если я напишу select agents from Agents as agents where '{11111}' in (agents.zip_codes)
, agent1
не будет найдено.Если вместо этого я использую '{33333}'
, будет найдено agent2
.
Конечно, я могу искать что-то вроде (в sql) WHERE zip_codes[1] = '11111' OR zip_codes[2] = '11111'
(массивы в PostgreSQL начинаются с индекса 1), но это не такудобно для многих записей в zip_codes.