spring boot 1.5.4使用JPA,遇到Mysql区分大小写的问题
来源:互联网 发布:2017517网络加速器官网 编辑:程序博客网 时间:2024/06/15 17:14
最近正在开发基于Spring Boot框架的应用,遇到了Mysql区分大小写的问题。
开发前期我一直使用本机Windows系统建立的数据库,后来将数据库迁到Linux上,使用大写字母建立的表、字段JPA都提示不存在,JPA在后台打印的SQL语句也都是小写的,原来是JPA默认将表名等转换成小写了,研究了下有两种解决方式:
改MySQL的cnf
关闭mysql
修改/etc/my.cnf添加设置
…
[mysqld]
lower_case_table_names=1
…
启动mysql使用PhysicalNamingStrategy
Spring Boot1.5.4 JPA是基于hibernate5.0的,有两种现成的方式实现PhysicalNamingStrategy- org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 无修改的
- org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy 有修改,Spirng Boot 1.5.4默认使用SpringPhysicalNamingStrategy ,会处理添加“-”,会将表、字段名转化为小写
application.yml中配置使用PhysicalNamingStrategy,就没有字段被小写的问题了
spring: jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
- 自定义实现PhysicalNamingStrategy
比如你想使用SpringPhysicalNamingStrategy ,又想命名不被转化为小写,可以自定义实现自己的逻辑,像SpringPhysicalNamingStrategy 中isCaseInsensitive方法是用来指定数据库是否区分大小写,但并未实现。
protected Identifier getIdentifier(String name, boolean quoted,JdbcEnvironment jdbcEnvironment) { if (isCaseInsensitive(jdbcEnvironment)) { name = name.toLowerCase(Locale.ROOT); } return new Identifier(name, quoted);}protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) { return true;}
这边就可以继承SpringPhysicalNamingStrategy,重新isCaseInsensitive方法将返回值改为false,满足SpringPhysicalNamingStrategy规则也不会将表名等转化成小写:
public class MySQLUpperCaseStrategy extends SpringPhysicalNamingStrategy { @Override protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) { return false; }}
自己实现PhysicalNamingStrategy,就可以满足定制化的一些名称处理,如表名加前缀,后缀等等。
阅读全文
0 0
- spring boot 1.5.4使用JPA,遇到Mysql区分大小写的问题
- mysql区分大小写问题
- Mysql区分大小写问题
- Mysql----区分大小写问题
- mysql区分大小写问题
- spring boot JPA mySql 启动报错的问题
- Linux下MySQL的大小写区分问题
- LINUX下mysql的大小写区分问题
- LINUX下mysql的大小写区分问题
- LINUX下mysql的大小写区分问题
- LINUX下mysql的大小写区分问题
- MySQL查询不区分大小写的问题
- LINUX下mysql区分大小写的问题
- 关于MySQL区分大小写问题的探究
- mysql字符串区分大小写的问题
- 9.8 遇到的一些问题 maven部署项目,mysql区分大小写
- Mysql区分大小写(大小写敏感)的问题总结
- Spring Boot:在Spring Boot中使用Mysql和JPA
- 【HDU-1280】 前m大的数
- Makefile文件名操作函数
- sqlserver中修改表之后无法保存
- 控制耦合
- 关于android中的.9图制作
- spring boot 1.5.4使用JPA,遇到Mysql区分大小写的问题
- - `Yoga (= 0.44.0.React)` required by `React/Core (0.44.0)`
- [Notes][多项式]杂记 · 多项式算法—多项式求逆 多项式取模 多项式开根…
- Retrofit分析
- Android 获取 View 宽高的常用正确方式,避免为零
- python3.x-hashlib-md5加密用户登录注册
- codewars算法题(3)
- 【openstack基础知识】openstack概念
- 标记耦合