我正在与QueryDSL一起使用Spring数据。我有一个JPQLQuery,并希望通过一个计算值对它进行排序。此计算值位于1:n关系中。假设我有以下实体:
现在我想按最喜欢的比萨饼的总价订账单。我怎样才能用QueryDSL做到这一点呢?
在类似JPQL的伪代码中,它看起来如下所示:
select from Bill b left join b.pizzas p where p.favorite == true order by (p.prize + p.tax)
对于QueryDSL,我可以在Order子句中使用如下内容:
QBill.bill.any().prize.add(QBill.bill.any().tax).asc()
这里的问题是any()。这样,它就可以总结所有的奖品和税收,而忽略where条款。
如何用查询dsl表示在伪代码中显示的查询?
提前谢谢!
发布于 2015-03-03 19:38:56
查询将是
QBill bill = QBill.bill;
QPizza pizza = QPizza.pizza;
new JPAQuery(em).from(bill)
.leftJoin(bill.pizzas, pizza)
.where(pizza.favorite.eq(true))
.orderBy(pizza.prize.add(pizza.tax).asc())
.list(bill);使用QBill.bill.any(),您将有一个新的连接,从比尔到比萨,这是你想要避免的事情。
https://stackoverflow.com/questions/28836545
复制相似问题