我有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();
}
我总是得到
DataIntegrityViolationException
或InvalidDataAccessApiUsageException
。我已经尝试过以多种不同方式编写此查询。 最佳答案
查询可以更像下面的查询。
内部查询与“租车”表中的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
)