несколько условий IN в JPQL - PullRequest
4 голосов
/ 30 ноября 2010

Как я могу выразить следующий SQL в JPQL:

select * from table where 
( ( table.col1 , table.col2) in 
   (col1val1, col2val1),
   (col1val2, col2val2),
   (col1val3, col2val3)
)

КСТАТИ: Выше приведен правильный синтаксис Oracle SQL

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Мой JPQL ужасен, но как насчет чего-то вроде:

select tableDto from TableDto tableDto 
where (tableDto.col1 = col1val1 and tableDto.col2 = col2val1)
or (tableDto.col1 = col1val2 and tableDto.col2 = col2val2)
or (tableDto.col1 = col1val3 and tableDto.col2 = col2val3)

Это не красиво.

0 голосов
/ 30 ноября 2010

Редактировать: Забудьте, что следует, это не правильно. Оставил, чтобы показать мышление

Я думаю, вам сначала нужно разбить многомерное утверждение на составляющие:

select * from table 
where table.col1 in (col1val1, col1val2, col1val3)
and table.col2 in (col2val1, col2val2, col2val3)

, что переводится в JPQL (при условии, что «таблица» сопоставлена ​​с сущностью TableDto), например:

select tableDto from TableDto tableDto 
where tableDto.col1 in(col1val1, col1val2, col1val3)
and tableDto.col2 in(col2val1, col2val2, col2val3)

Выше не протестировано, но дополнительную информацию можно найти в справочной документации JPQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...