java - 如何将 SQL“select case when in”转换为 JPQL 以获得相同的结果?
问题描述
我的 t_user 表示例数据就像
id name
1 Hunt
2 James
3 Bob
4 Hero
我使用下面的 SQL 来获得一个布尔结果,它可以正常工作,正如我所期望的那样。
SELECT CASE WHEN :userId IN (SELECT name FROM t_user) THEN TRUE ELSE FALSE END AS exist;
如果 :userId 为“Bob”,则返回以下结果
exist
1
或者如果 :userId 是“Jack”,它会返回这个
exist
0
但是,当我将该 SQL 转换为以下 JPQL 时(其中 User 是表 t_user 的 Java 类映射)
SELECT CASE WHEN :userId IN u.uid THEN TRUE ELSE FALSE END FROM User u;
如果 :userId 是“Bob”,我会得到一个类似 [false, false, true, false] 的结果列表。如果 :userId 为“Jack”,则获取结果列表 [false, false, false, false]。我认为 JPQL 判断 t_user 中的每一行都匹配 :userId 并分别返回结果,但显然这不是我所期望的。我期望一个布尔结果,这就是我使用 IN 子句的原因。
那么,任何人都可以帮助告诉我我应该在这里使用什么正确的 JPQL?太感谢了!
解决方案
推荐阅读
- python - Python Eval 使 datetime 模块可用
- php - 如何根据数据表的分页限制我的数据库请求?
- google-apps-script - 在多个条件下一次移动多行
- anylogic - 遍历项目树中的对象
- java - 如何解决 Android Studio 中组件重叠的问题?
- scala - 如何在生成 xml 时使用 spark 对日期进行排序?
- mysql - 在一个 SQL 查询中合并两个表并使日期值唯一
- android - 导航组件(RecyclerView)
- powershell - PS1 上的参数缺少参数
- python - 安装 scrapy 错误 - 当我尝试安装 scrapy 时,我收到以下错误,我不知道如何修复它: