首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用弹簧数据计算QueryDsl中1:n关系的阶数

问用弹簧数据计算QueryDsl中1:n关系的阶数
EN

Stack Overflow用户
提问于 2015-03-03 16:13:20
回答 1查看 851关注 0票数 2

我正在与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表示在伪代码中显示的查询?

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 19:38:56

查询将是

代码语言:javascript
复制
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(),您将有一个新的连接,从比尔到比萨,这是你想要避免的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28836545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档