【问题标题】:JPQL Query for ElementCollectionElementCollection 的 JPQL 查询
【发布时间】:2014-01-12 17:17:54
【问题描述】:

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

@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 美元的客户。我尝试了很多方法,但它总是会产生类似的东西:
从客户 t0 中选择 t0.ID,在哪里订购 t1 ((t1.PRICE > 100) AND (t0.COACH_ID = t1.ID))

问题是它会返回所有订单超过 100 的客户,而不是那些尚未下订单的客户。是因为t0.COACH_ID = t1.ID造成的。

我正在使用 eclipse 链接 2.5,我尝试了所有选项但无法成功。

任何帮助将不胜感激。

【问题讨论】:

    标签: java eclipselink jpa-2.0 jpql


    【解决方案1】:

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

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

    我相信LEFT JOIN 会做一个外连接,所以它仍然应该包括没有订单的客户。

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      相关资源
      最近更新 更多