HQL zapytanie - in 2 kolumny

0

Chcę napisać zapytanie HQL, którego fragment zawiera
and x.id in (select y.id from Table y)
lecz chciałbym, żeby sprawdzało czy x.id jest w dwóch kolumnach tabeli Table, przykładowo:
and x.id in (select y.id, y.id2 from Table y)
ale wtedy dostaję:

SEVERE: ERROR: subquery has too many columns 
org.hibernate.exception.SQLGrammarException: could not execute query
Caused by: org.postgresql.util.PSQLException: ERROR: subquery has too many columns

na stackoverflow widziałem możliwą odpowiedź, by zrobić coś w stylu:
and (x.id, x.id) in (...)
lecz nie wydaje mi się, żeby to działało tak jak chcę dla dwóch tych samych wartości (x.id).
Cel jest taki, żeby sprawdzić czy x.id znajduje się w kolumnie y.id lub y.id2

1

Klauzula in pozwala na porównanie ze zbiorem obiektów o takiej samej ilości kolumn.

Prawidłowym rozwiązaniem będzie Unia dwóch podzapytań tak by otrzymać jedną kolumnę. W SQLu:

and x in (select id from y union select id2 from y)

Niestety hql nie wspiera unii > https://hibernate.atlassian.net/browse/HHH-1050 (bug z 2005 roku!). Zatem trzeba zrobić to przez warunek OR:
and (x.id in (select y.id from Table y) or x.id in (select y.id2 from Table y))

1 użytkowników online, w tym zalogowanych: 0, gości: 1