ElementQL的JPQL查询

时间:2013-12-24 12:52:13

标签: java eclipselink jpa-2.0 jpql

假设我有以下实体和关系:

@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,我尝试了所有选项,但无法实现。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你有没有试过这样的事情:

SELECT DISTINCT c FROM Customer c 
LEFT JOIN c.orders o
WHERE o.price < 100 
OR c.orders IS EMPTY

我相信LEFT JOIN会进行外部联接,因此它仍应包含没有订单的客户。