我有3个实体:汽车,租赁和客户。
租金与汽车和客户有关。

我需要编写查询查询来查找10多个不同客户租用的汽车

以下代码:

@Override
    public List<CarEntity> findCarsRentedByDifferentCustomers() {

        TypedQuery<CarEntity> query = entityManager.createQuery(
        "SELECT car FROM CarEntity car join car.rentals cr " +
                "WHERE(SELECT COUNT(re) FROM RentalEntity re " +
                "join re.customer c " +
                "GROUP BY c.id) > 10", CarEntity.class
        );

        return query.getResultList();
    }


我总是得到DataIntegrityViolationExceptionInvalidDataAccessApiUsageException。我已经尝试过以多种不同方式编写此查询。

最佳答案

查询可以更像下面的查询。
内部查询与“租车”表中的car_id相匹配,并检查是否有10个以上的独立客户租用了一辆独特的汽车。

请注意,您可能需要将查询更改为使用正确的表列。
您未提供表结构和示例数据。

SELECT
 Car.*
FROM
 Car
WHERE
 Car.id IN (

  SELECT
   Rental.car_id
  FROM
   Rental
  GROUP BY
   Rental.car_id
  HAVING
   COUNT(DISTINCT Rental.customer_id) > 10
)

10-05 21:33