【问题标题】:JPA Subquery failsJPA 子查询失败
【发布时间】:2021-09-06 20:28:07
【问题描述】:

有人知道为什么会失败吗?

@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

【问题讨论】:

    标签: sql spring-boot jpa spring-data-jpa


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 2021-10-25
      • 2023-03-26
      • 2014-07-11
      • 2014-02-11
      • 2012-10-31
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多