本人之前一直用mybitis,现在项目上使用jpa,给我带来了极大的方便,但也遇到一些问题。下列需求是这样的,我要根据id in 筛选出符合条件的数据,并将其中的某个字段,拼接起来返回。用原生sql比较简单,使用GROUP_CONCAT 函数即可。

SELECT GROUP_CONCAT(`name`) `names` FROM `face_machine` WHERE id in (1,2,3);

但使用jpa(非原生sql,因为很多地方都用到了,且使用原生sql,数据处理起来比较麻烦) 就会有问题了,我项目中jpa底层是使用的hibernate,所以要研究出如何使用hql语句来使用GROUP_CONCAT函数。

首先,dao层方法是这样的

    @Query(value = "select GROUP_CONCAT(fm.name) as names from FaceMachine fm where id in (?1)")String findNamesByIds(List<Integer> list);

这样直接使用是不行的,因为GROUP_CONCAT不是常用的函数。需要配置方言了。

要自定义一个MySQLDialect类

package com.ymkj.property.dialect;import org.hibernate.dialect.MySQLDialect;
import org.hibernate.dialect.function.StandardSQLFunction;/*** @author zhengyue* @data 2019-08-06 11:16*/
public class MyMysqlDialect extends MySQLDialect{public MyMysqlDialect() {super();registerFunction("GROUP_CONCAT", new StandardSQLFunction("GROUP_CONCAT"));}
}

然后需要在配置文件中添加配置,我的配置文件是xml

spring:
# jap自动创建表及打印sqljpa:hibernate:ddl-auto: updateshow-sql: trueproperties:hibernate:dialect: com.ymkj.property.dialect.MyMysqlDialectdatabase: mysql

主要是spring.properties.hibernate.dialect=com.ymkj.property.dialect.MyMysqlDialect (自定义的类)

//-------------------------------------------------------遇到以下问题------------------------------------------------------------------------------------//

刚开始按上述操作,启动并无问题,但若有需要新创建的表,就会出现问题,会报错,表也不会被创建出来。查了很多,都说是因为方言问题。确实是方言问题。下面附上解决方法:

package com.ymkj.property.dialect;import org.hibernate.dialect.MySQLDialect;
import org.hibernate.dialect.function.StandardSQLFunction;/*** @author zhengyue* @data 2019-08-06 11:16*/
public class MyMysqlDialect extends MySQLDialect {public MyMysqlDialect() {super();registerFunction("GROUP_CONCAT", new StandardSQLFunction("GROUP_CONCAT"));}
//此处是解决创建表报错问题@Overridepublic String getTableTypeString() {return " ENGINE=InnoDB DEFAULT CHARSET=utf8";}
}

SpringBoot + Spring data JPA使用方言(自定义函数、一些自带函数)相关推荐

  1. 基于SpringBoot+ Spring Data Jpa的后台管理系统【源码开源】

    昨天朋友找我喝酒,说30岁了,比较焦虑,钱没赚到,整天被媳妇数落. 其实现在我们看到的不一定就事真实的情况,就算从高斯分布看,平平淡淡的人生才是大部分人的轨迹.当然抖音.知乎上的不能比,人均收入百万, ...

  2. SpringBoot集成Spring Data JPA多数据源(二)

    目录 1.引入依赖 2.application.yml配置文件 3.AtomikosJtaPlatform 4.事务管理器JPAAtomikosTransactionConfig 5.主数据源配置 6 ...

  3. Spring Data JPA 教程(翻译)

    写那些数据挖掘之类的博文 写的比较累了,现在翻译一下关于spring data jpa的文章,觉得轻松多了. 翻译正文: 你有木有注意到,使用Java持久化的API的数据访问代码包含了很多不必要的模式 ...

  4. Spring Boot中使用Spring Data JPA示例

    JPA是Java Persistence API的简称,是sun公司早期推出的Java持久层规范,目前实现JPA规范的主流框架有Hibernate.OpenJPA等.Hibernate框架是当前较为流 ...

  5. 【SpringBoot框架篇】11.Spring Data Jpa实战

    文章目录 1.简介 1.1.JPA 1.2.Spring Data Jpa 1.3.Hibernate 1.4.Jpa.Spring Data Jpa.Hibernate三者之间的关系 2.引入依赖 ...

  6. SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...

  7. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  8. spring-boot (三) spring data jpa

    学习文章来自:http://www.ityouknow.com/spring-boot.html spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence ...

  9. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离

    相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...

最新文章

  1. ECShop显示某商品销售累计
  2. 数据结构-二叉树的遍历
  3. 【HDU - 5914 】Triangle (打表 或 set维护)
  4. 面试题,产品经理岗位的哪些特点最吸引你?
  5. 【转载】Maven pom文件详解
  6. python输入的字符串转换为对应的数字类型_Psychopy | 第1期:数据类型及运算符
  7. 如何高效和快乐的学习RS和GIS知识
  8. LINUX设置终端窗口显示内容的滚动缓冲行数
  9. 学习C语言,有哪些值得推荐的经典书籍?
  10. 《Windows游戏编程大师技巧》(第二版)
  11. 【control】模型预测控制(MPC)
  12. java基本数据类型存放在哪?
  13. 【C语言】蓝桥杯/ACM竞赛入门 A+B for Input-Output Practice
  14. 手把手简单制作一个 Java 木马程序
  15. java 级数_编写一个Java程序实现级数运算。
  16. JAVA+MySQL 图书馆借阅信息管理系统
  17. 计算机基础知识文件的复制移动,如何复制文件
  18. 【从0开始学web】89-150 php特性
  19. 名额有限| 和喜马拉雅、网易严选、大搜车...学运营,是超级用户运营!
  20. VLC web插件 js接口

热门文章

  1. if 下与 或执行与否
  2. 计算机博后 国外招聘,全额奖学金机会,香港理工计算机系博后/博士/研究助理招收中...
  3. paper_summary
  4. 在一台服务器安装多个MySQL数据库实例
  5. 基于阈值的全零块判决算法
  6. 暗夜临近,DApp江湖上演现实版狼人杀
  7. android switch 空间,android Android UI(Switch)详解
  8. jQuery 关键字搜索(自动完成效果,autocomplete)
  9. CS224d lecture 14札记
  10. 对话雪球创始人方三文:「打工人」如何选行业、找工作、挑老板?|创新大会 2021...