【问题标题】:QueryDSL Hibernate: order by intersectionQueryDSL Hibernate:按交集排序
【发布时间】:2013-03-20 17:04:03
【问题描述】:

我有一个 0-n 喜欢的实体编码器。 我的查询包括,给定一个名为 A 的编码员,查找所有至少有一个共同爱好的编码员,按与 A 的共同爱好的降序排列。这是到目前为止的样子:

query.from(coder, other)
     .where(
          coder.firstName.toLowerCase().eq(firstName)
          .and(coder.lastName.toLowerCase().eq(lastName))
          .and(other.ne(coder))
          .and(other.likings.any().in(coder.likings))
     )
     .orderBy(coder.likings.???);

有没有办法通过 QueryDSL 来实现指定客户订单?我在ListPath 中没有找到任何相关内容。如果是这样,我可以使用 Guava 来计算交集。

提前致谢,

罗尔夫

【问题讨论】:

    标签: hibernate querydsl


    【解决方案1】:

    你可以试试

        .orderBy(coder.likings.size().desc());
    

    如果这不起作用,请尝试使用额外的连接和分组方式进行显式聚合。

    【讨论】:

    • 感谢您的回答。我实际上想做的事情是:.orderBy(intersection(coder.likings, other.likings).size())
    • 我认为你可以通过 joins 和 groupBy 来表达。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多