wm_concat ( distinct tt.extend_code ) , sum ( rr.annuali_count ) , count ( distinct rr.staff_id ) from tm_duct_whole rr left join tm_duct_extend_data tt on rr.industry_type = tt.extend_code where tt.extend_type = 3 and rr.is_close = 0 and rr.is_login = 1 and rr.industry_type is not null group by tt.extend_id, tt.extend_name

转化为jpa实现的编程,借助模板使用函数。具体的操作如下所示:

//编译生成的实体类
QTmDuctWhole tmDuctWhole = QTmDuctWhole.tmDuctWhole;
QBasicData basicData = QBasicData.basicData;
SimpleTemplate<Double> annualiCount = Expressions
    .template(Double.class, "round(sum(ANNUALI_COUNT))");
//进行字符串拼接    
SimpleTemplate<String> extendCode = Expressions
    .template(String.class, "to_char(wm_concat(distinct EXTEND_CODE))");
//计算总人数    
SimpleTemplate<Integer> userCount = Expressions
    .template(Integer.class, " count(distinct staff_id)");
List<TrackBean> industryList = secondaryJpaSqlQuery()
    .select(Projections.bean(TrackBean.class,
        basicData.extendId.as("extendId"),
        basicData.extendName.as("extendName"),
        extendCode.as("extendCode"),
        annualiCount.as("annualiCount"),
        userCount.as("count")))
    .from(tmDuctWhole).leftJoin(basicData)
    .on(tmDuctWhole.industryType.eq(basicData.extendCode))
    .where(basicData.extendType.eq(3)
        .and(tmDuctWhole.isClose.eq(0))
        .and(tmDuctWhole.isLogin.eq(1))
        .and(tmDuctWhole.industryType.isNotEmpty()))
    .groupBy(basicData.extendId, basicData.extendName)
    .fetch();
原生的sql中使用的函数,具体的sql实现如下:select tt.extend_id, tt.extend_name, wm_concat(distinct tt.extend_code), sum(rr.annuali_count), count(distinct rr.staff_id) from tm_duct_whole ...
这个模拟的是mysql的DATE_FORMAT(date,format)和FROM_UNIXTIME() 函数 的一起 使用 ,因为项目 一个发布时间的设定是时间戳,所以需要 使用 FROM_UNIXTIME()来把时间戳转化。 实现业务逻辑: 按照小时分组统计的功能 SELECT DATE_FORMAT(FROM_UNIXTIME(publish_time/1000),'%Y-%m-%d %H...
如果是初次 使用 QueryDSL 的同学建议去这篇博客:SpringData JPA + QueryDSL 玩转态动条件/投影查询,本文针探讨的是 使用 时遇到的一些问题: 如何 使用 Projections.bean投影属性到查询对象,简化代码? 如何 使用 级联查询,关联同一张表两次? 1. Projections简化代码,使代码更优雅 使用 Projections方法可以更简单更方便的返回自定义的参数...
楼主项目 要求所有的SQL必须以 JPA QueryDsl 格式进行数据库操作,其 有一个稍微复杂点的嵌套子查询,网上资料比较少,而且子查询也特别简单。费了好大的劲才搞出来,现贴出来供大家参考。 这是MyBatis的查询格式: select dd.crm_province as 省编码, dd.province_name as 省份, nvl(dd.annco...
https://blog.csdn.net/qq_38230774/article/details/88870649和 https://blog.csdn.net/qq_38230774/article/details/88870649和 https://bbs.csdn.net/topics/392207536的资料 先说需求 查询每个月的数据量是多少
本例项目源码地址 本文内容前提建立在自己对 Jpa 和hibernate有所了解。由于自己比较喜欢 使用 Gradle作为构建工具,所以项目基本都 使用 Gradle为例。如果本文有存在错误,希望大家指出说明。 使用 Spring boot作为基本环境,添加相关依赖。数据库这里采用Mysql depen...
querydsl - jpa 是一个基于 Java 语言的开源 ORM 查询框架,它提供了一种类型安全、流畅的 API 接口,使得查询 JPA 实体变得更加容易和简单。通过 使用 querydsl - jpa ,开发人员可以避免常见的 JPA 查询繁琐和容易出错的情况,同时,也可以享受到类型安全、易于维护和更加高效的查询体验。 querydsl - jpa 的主要特点包括: 1. 类型安全的查询: querydsl - jpa 提供了一种类型安全的查询 API 接口,完全避免了 使用 字符串拼接的方式来生成 SQL 语句的情况。 2. 支持 JPA 实体: querydsl - jpa 能够直接与 JPA 实体进行交互,从而使得在查询 使用 的实体更加类型化和直观。 3. 支持复杂查询操作: querydsl - jpa 支持诸如嵌套子查询、联合查询、分页查询、排序查询等常见的查询操作,从而满足了更加复杂的查询需求。 4. 提供完整的类型支持: querydsl - jpa 支持传统的 SQL 数据类型,例如 INTEGER、VARCHAR 等,也支持 JPA 支持的所有类型,例如 Date、Time、Timestamp、Boolean 等。 5. 可维护性强: querydsl - jpa 生成的查询语句易于阅读和维护,从而减少了因为 SQL 语句难以阅读和理解而带来的错误和困难。 综上所述, querydsl - jpa 是一种高效、易用、类型安全、并且具有完整类型支持的 ORM 查询框架,它极大地方便了 Java 开发人员进行 JPA 实体查询操作,提高了项目的开发效率和质量。
关于项目报错:Error:Cannot build artifact 'XXX:war exploded' because it is included into a circular dep 关于项目报错:Error:Cannot build artifact 'XXX:war exploded' because it is included into a circular dep Maynor996: 我在大佬的评论区瑟瑟发抖,希望能引起注意并回访我的博客哈哈 querydsl+jpa编程中如何使用函数 我用querydsl调用出现以下错误 [code=plain] org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode \-[METHOD_CALL] MethodNode: '(' +-[METHOD_NAME] IdentNode: 'to_char' {originalText=to_char} \-[EXPR_LIST] SqlNode: 'exprList' \-[METHOD_CALL] MethodNode: '(' +-[METHOD_NAME] IdentNode: 'getMatchJob' {originalText=getMatchJob} \-[EXPR_LIST] SqlNode: 'exprList' [/code] springboot项目之间接口的相互调用 java持续实践: 大佬, 你这种方法不行啊, 报错javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection, 提示不是https的服务