У меня есть две сущности:
@Entity
public class Customer implements java.io.Serializable {
...
@OneToMany(fetch=FetchType.EAGER, mappedBy="customer")
private Set<CustomerOrder> customerOrders;
...
@Entity
public class CustomerOrder implements java.io.Serializable {
....
private double cost;
@ManyToOne
@JoinColumn(name="CUST_ID")
public Customer customer;
...
Теперь в моем JPQL я хочу вернуть этим клиентам их CustomerOrder.cost> 1000. Например, есть три клиента A, B и C. У A есть два заказа со стоимостью = 1000 и 2000 соответственно. B имеет три заказа со стоимостью = 2000, 3000 и 500 соответственно. C имеет один заказ со стоимостью = 500. Теперь я хочу получить трех клиентов: A возвращает заказы только со стоимостью = 2000; B возвращает заказы с 2000 и 3000; C возвращает пустую коллекцию заказов.
Но следующее всегда будет возвращать полную коллекцию:
select c from Customer c, in(c.customerOrders) o where o.cost>1000
Как я могу сделать это в JPQL или в Hibernate в частности?