Java ElementCollection的JPQL查询

Java ElementCollection的JPQL查询,java,eclipselink,jpa-2.0,jpql,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; } @E

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

@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;

}
@实体
@表(name=“客户”)
公共类客户{
@身份证
私人长id;
@元素集合
@CollectionTable(name=“ORDER”,joinColumns=@JoinColumn(name=“ORDER\u ID”))
私人名单订单;
}
@可嵌入
公共阶级秩序{
私人多头价格;
}
现在我想得到所有没有订单或订单价格低于100美元的客户。我尝试了很多方法来实现它,但它总是生成类似这样的内容:
从客户t0中选择t0.ID,订单t1,其中((t1.PRICE>100)和(t0.COACH_ID=t1.ID))

问题是,它会返回所有订单超过100的客户,但不会返回尚未下订单的客户。这是由于t0.COACH_ID=t1.ID引起的

我使用的是EclipseLink2.5,我尝试了所有选项,但都没有成功


任何帮助都将不胜感激。

您是否尝试过以下方法:

SELECT DISTINCT c FROM Customer c 
LEFT JOIN c.orders o
WHERE o.price < 100 
OR c.orders IS EMPTY
从客户c中选择不同的c
左连接c.o
其中o.price<100
或者c.订单为空
我相信
LEFT JOIN
将进行外部连接,因此它应该仍然包括没有订单的客户