Java JPQL中的多个IN条件
如何在JPQL中表达以下SQL:Java JPQL中的多个IN条件,java,jpa,jpql,Java,Jpa,Jpql,如何在JPQL中表达以下SQL: select * from table where ( ( table.col1 , table.col2) in (col1val1, col2val1), (col1val2, col2val2), (col1val3, col2val3) ) 顺便说一句:以上是有效的Oracle SQL语法编辑:忘记下面的内容,这是不正确的。留下来显示思考 我认为你首先必须把多维的陈述分解成它的组成部分: select * from table
select * from table where
( ( table.col1 , table.col2) in
(col1val1, col2val1),
(col1val2, col2val2),
(col1val3, col2val3)
)
顺便说一句:以上是有效的Oracle SQL语法编辑:忘记下面的内容,这是不正确的。留下来显示思考 我认为你首先必须把多维的陈述分解成它的组成部分:
select * from table
where table.col1 in (col1val1, col1val2, col1val3)
and table.col2 in (col2val1, col2val2, col2val3)
这将在JPQL中转换(假设“table”映射到实体TableDto
),如下所示:
select tableDto from TableDto tableDto
where tableDto.col1 in(col1val1, col1val2, col1val3)
and tableDto.col2 in(col2val1, col2val2, col2val3)
以上内容未经测试,但更多信息可在中找到。我的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)
这并不漂亮。问题在于该查询将匹配(col1val1,col2val2),而原始查询不会匹配。