首页 > 解决方案 > 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

标签: sqlspring-bootjpaspring-data-jpa

解决方案


我认为最后一点是不正确的。这应该有效:

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)")

推荐阅读