sql - JPA 子查询失败
问题描述
有谁知道它为什么失败?
@Query("SELECT CASE WHEN COUNT(x) > 0 THEN true ELSE false END FROM City a WHERE x.parking= :parking AND x.section= :section AND x.district IN (SELECT uc FROM DistrictCity uc WHERE uc.zone = :zone AND :user IN uc.users)")
Boolean carsExist(String parking, Section section, String zone, User user);
City (class)
String parking
Section section
DistrictCity district
DistrictCity (class)
String Zone
List<User> users (Many to Many relation)
它没有给出语法问题,但它给了我错误“缺少表达式(ORA-00936)”问题似乎出在:user IN uc.users
解决方案
我认为最后一点是不正确的。这应该有效:
SELECT uc FROM DistrictCity uc JOIN uc.users u WHERE uc.zone = :zone AND u = :user
因此,整个查询变为:
@Query("SELECT CASE WHEN COUNT(x) > 0 THEN true ELSE false END FROM City a WHERE x.parking= :parking AND x.section= :section AND x.district IN (SELECT uc FROM DistrictCity uc JOIN uc.users u WHERE uc.zone = :zone AND u = :user)")
推荐阅读
- sql - 订阅查询
- android - 将片段内容添加到活动的查看寻呼机时不可见?
- jenkins - Jenkins 声明性管道不正确的 svn 更改列表
- arduino-uno - 如何通过 BLE HC-08 从单个字符构建字符串?
- python - 如何从熊猫数据框中列出成对的连续行?
- python - OpenPyXL - 以相反的顺序迭代行,从 ws.max_row 到 1
- amazon-web-services - AWS Lambda CloudTrail 事件 SAM 映射
- c++ - CPP:定义模板时泛型数据类型T是一个类吗
- c# - 用于在 GUI 之间切换的占位符
- javascript - 数组元素未定义的时序问题?