【问题标题】:Mysema QueryDSL JPAQuery for SQL groupby clause and order byMysema QueryDSL JPAQuery for SQL groupby 子句和 order by
【发布时间】:2014-01-14 11:39:42
【问题描述】:

我有 Items 类:

@Entity
@Table(name ="Items")
Class Items{
    @ID
    private long id;
    private String upc;
    private long itemNo;
    private int qty;
   -----
}

我需要从 QueryDSL 的 JPAQuery 中创建以下 sql 语句。

select itemNo, upc, count(*) t from Items group by ITEM_NO, UPC order by t;

QueryDSL 示例需要修改 order by 子句

QItems items = QItems.items;
query.from(items)
.groupBy(items.itemNo,items.upc)
.orderby(<Dont Know How to sort on count>).list(items.itemNo,items.upc,items.count());

需要帮助来正确起草此查询?

【问题讨论】:

    标签: jpa-2.0 querydsl


    【解决方案1】:

    这应该可以工作

    NumberPath<Long> count = Expressions.numberPath(Long.class, "c");
    QItems items = QItems.items;
    query.from(items)
        .groupBy(items.itemNo,items.upc)
        .orderby(count.asc())
        .list(items.itemNo,items.upc,items.count().as(count));
    

    【讨论】:

    • 在我的例子中: NumberPath aliasCount = Expressions.numberPath(Long.class, "user.userId"); query(user).groupByaliasCount).orderBy(aliasCount.count().desc()).limit(limit);也成功了!
    • 只是避免将您的别名命名为“count” => Expressions.numberPath(Long.class, "count") 它给了我expecting OPEN, found 'desc' 因为count 是sql 中的保留字
    猜你喜欢
    • 2016-03-28
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多