JPQL 中的多个 IN 条件

发布于 2024-10-05 08:11:53 字数 222 浏览 1 评论 0原文

如何在 JPQL 中表达以下 SQL:

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

BTW:以上是有效的 Oracle SQL 语法

How can I express the following SQL in JPQL:

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

BTW: The above is valid Oracle SQL syntax

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最美不过初阳 2024-10-12 08:12:01

编辑:忘记下面的内容,它不正确。留下来展示思考

我认为你首先必须将多维语句分解为其组成部分:

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 参考文档

Edit: Forget what follows, it's not correct. Left in to show thinking

I think you'd first have to split out the multi-dimensional statement into it's constituents:

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

which would translate in JPQL (assuming that "table" is mapped to an entity TableDto) like this:

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

The above is untested, but further information can be found in the JPQL reference documentation.

阳光下慵懒的猫 2024-10-12 08:11:59

我的 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)

它不漂亮。

My JPQL is terrible, but how about something like:

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)

It's not pretty.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文