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
将进行外部连接,因此它应该仍然包括没有订单的客户