假设我有以下实体和关系:
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@Id
private long id;
@ElementCollection
@CollectionTable( name="ORDER", joinColumns=@JoinColumn(name="ORDER_ID") )
private List<Order> orders;
}
@Embeddable
public class Order {
private long price;
}
现在我希望所有没有订单或订单价格的客户都低于100美元。我在很多方面试过它,但总会产生类似的东西:
SELECT T0.ID FROM CUSTOMER t0,ORDERS t1 WHERE((t1.PRICE&gt; 100)AND(t0.COACH_ID = t1.ID))
问题在于它会退回订单超过100的所有客户,而不是那些尚未订购的客户。它是由于t0.COACH_ID = t1.ID而引起的。
我正在使用eclipse link 2.5,我尝试了所有选项,但无法实现。
任何帮助将不胜感激。
答案 0 :(得分:0)
你有没有试过这样的事情:
SELECT DISTINCT c FROM Customer c
LEFT JOIN c.orders o
WHERE o.price < 100
OR c.orders IS EMPTY
我相信LEFT JOIN
会进行外部联接,因此它仍应包含没有订单的客户。