【问题标题】:How to write inner join query in JPARepository如何在 JPARepository 中编写内部连接查询
【发布时间】:2017-11-16 13:56:12
【问题描述】:

我有以下查询,它在 MySQL 中完美运行,但是当我在存储库中写入时出现错误如何在 JPARepository 中编写内部联接查询?

@Query("Select address from Address a inner join Order o ON a.id=o.pickup_address_id where o.customer_id=: customerId  AND a.address LIKE 'C%'")
     Set<Address> findPickupAddress(@Param("customerId") Long customerId); 

错误:意外标记:第 1 行第 66 列附近的订单

【问题讨论】:

    标签: java mysql repository spring-data-jpa inner-join


    【解决方案1】:

    order 是保留字。如果你不能重命名表,你应该像这样使用它:

    @Query("Select address from Address a inner join `Order` o ON ...")
    

    【讨论】:

    • 检查我的答案:')
    • 你问题中的查询是原生sql查询而不是jpql!
    【解决方案2】:

    JPQL 中没有ON,因此查询更新为:

     @Query("Select a from Address a , Order o where a.id=o.pickupAddress AND o.customer.id=:customerId  AND a.address LIKE 'C%'")
         Address findPickupAddress(@Param("customerId") Long customerId);
    }
    

    【讨论】:

    • 这将生成一个外连接而不是内连接!
    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2021-04-11
    相关资源
    最近更新 更多