J'ai deux entités:Comment filtrer la collection en JPA/JPQL?
@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;
...
Maintenant, dans mon JPQL, je veux revenir les clients avec leur CustomerOrder.cost> 1000. Par exemple, il y a trois clients A, B et C. A a deux ordres avec coût = 1000 et 2000 respectivement. B a trois commandes avec un coût = 2000,3000 et 500 respectivement. C a une commande avec un coût = 500. Maintenant, je veux obtenir les trois clients: A retourne les commandes avec coût = 2000 seulement; B renvoie les ordres avec 2000 et 3000; C renvoie une collection de commandes vide.
Mais ce qui suit renvoie toujours la collection complète:
select c from Customer c, in(c.customerOrders) o where o.cost>1000
Comment puis-je faire dans JPQL ou Hibernate en particulier?
jscoot dit qu'il retourne toutes les lignes , donc votre première requête peut ne pas être équivalente à sa requête puisque C n'a qu'un seul ordre, et son coût est <1000. –