【问题标题】:QueryDSL select count() / count() how~?QueryDSL select count() / count() 怎么样~?
【发布时间】:2020-08-24 04:48:15
【问题描述】:

选择

      (select count(*) from table2 where table2.table2Seq = table1.table1Seq) as count1,

      (select count(*) from table2 where table2.table2Seq = table1.table1Seq and table2Yn = true) as count2,

      (select count(*) from table2 where table2.table2Seq = table1.table1Seq) / (select count(*) from table2 where table2.table2Seq = table1.table1Seq and table2Yn = true) as count3

来自

      table1

按顺序

     count3

**我想要这个查询。你如何把它变成一个queryDSL?我想对子查询中的计数器除以子查询中的计数器进行排序。 **

NumberPath<Long> count1 = Expressions.numberPath(Long.class, “count1”);
NumberPath<Long> count2 = Expressions.numberPath(Long.class, “count2”);
NumberPath<Long> count3 = Expressions.numberPath(Long.class, “count3”);

JPQLQuery<OnlineTrainingCourseDto> query = getQuerydsl().createQuery()
    .select(
        new Dto(
            ExpressionUtils.as(
                JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)),
                count1
            ),
            ExpressionUtils.as(
                JPAExpressions.select(table2.table2Seq.count())
                        .from(table2)
                        .where(table2.table2Seq.eq(table1.table1Seq)
                        .and(table2.table2Yn.eq(true))),
                count2
            ),
            
            ***????? count1 / count2 as count3 ?????***

            )
        )
    )
    .from(table1)

【问题讨论】:

    标签: querydsl


    【解决方案1】:

    您可以将表达式转换为数字表达式以访问除法运算符:

    JPAExpressions.asNumber(
         JPAExpressions.select(table2.table2Seq.count())
                            .from(table2)
                            .where(table2.table2Seq.eq(table1.table1Seq)))
    .divide(
        JPAExpressions.asNumber(JPAExpressions.select(table2.table2Seq.count())
                            .from(table2)
                            .where(table2.table2Seq.eq(table1.table1Seq)
                            .and(table2.table2Yn.eq(true))))
    ).as("count3")
    

    【讨论】:

    • 非常感谢。JPAExpressions.asNumber...我没想到。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2015-01-15
    • 2011-09-25
    相关资源
    最近更新 更多