Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题
(转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题
这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执行sql时,总会提示表不存在。
寻找之后发现, 建表时,表统一采用了大写。hibernate会把大写统一转换成小写。且 mysql在 linux下 大小写敏感。
解决:
1. 尝试修改mysql的cnf文件,改成不区分大小写。修改完成之后发现问题并没有解决,还产生了新的问题,表名无论大小写都失败了。
2. 数据库层面修改没有效果, 表结构和表名不能修改,那只能通过代码实现来解决此问题了。
先感谢 三个博主提供的资料
地址一 http://blog.csdn.net/q979076061/article/details/51539960
地址二 http://blog.csdn.net/jackyxwr/article/details/8618908
地址三 http://blog.csdn.net/qinshijangshan/article/details/53444499
第一篇和第二篇 博客给我提供了很好的思路,然后就照着去实践, hibernate 5之前 默认的命名定义策略使用的是 org.hibernate.cfg.ImprovedNamingStrategy 这个类。上面博客说的很清楚这里就不赘述了。想要自定义命名策略 直接集成此类,在此类上扩展就好了。
代码编写完成之后, 配置之后,并没有如愿以偿的解决了问题。思路很正确,只能顺着接着找了。 看到第三篇博客之后发现自己哪里有问题了, hibernate在5.1版本之后对此作了修改
引用第三篇博客原文:
原来是Hibernate5.1相关配置变了。
参考:http://412887952-qq-com.iteye.com/blog/2315686
参考:http://stackoverflow.com/questions/32165694/spring-hibernate-5-naming-strategy-configuration
hibernate.ejb.naming_strategy将不再被支持,而是被替换成了两个属性:
hibernate.physical_naming_strategy
hibernate.implicit_naming_strategy
对于physical_naming_strategy有两个常用的配置:
org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
对于PhysicalNamingStrategyStandardImpl有DefaultNamingStrategy的效果,对于SpringPhysicalNamingStrategy有ImprovedNamingStrategy的效果。
经过查看这两个类的源码之后, 发现上面的思路依旧是可以的下面是我的代码
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.springframework.stereotype.Component; @Component
public class MySQLUpperCaseStrategy extends PhysicalNamingStrategyStandardImpl { private static final long serialVersionUID = 1383021413247872469L; @Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
// 将表名全部转换成大写
String tableName = name.getText().toUpperCase(); return name.toIdentifier(tableName);
} }
yml的配置:
#配置hibernate的命名策略
hibernate:
naming:
physical-strategy: com.XX.XX.common.MySQLUpperCaseStrategy
Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题的更多相关文章
- Spring boot Jpa添加对象字段使用数据库默认值
Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
- spring boot ----> jpa连接和操作mysql数据库
环境: centos6.8,jdk1.8.0_172,maven3.5.4,vim,spring boot 1.5.13,mysql-5.7.23 1.引入jpa起步依赖和mysql驱动jar包 &l ...
- Spring Boot + Jpa(Hibernate) 架构基本配置
本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...
- windows下mysql数据库表名大小写不敏感
最近新入职,领导让做个小功能先练练手.是一个添加分类的功能,有添加和列表,很简单.功能做完后提交,结果在线上出现一个大大的500. 但是我再本地环境下是正常的,我以为可能是php的版本不一致导致的问题 ...
- mysql 数据库表名大小写问题
lower_case_table_names=1 原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /usr/my.cnf: ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Spring Boot JPA分页 PageRequest报错
在使用Spring Boot JPA分页 PageRequest分页时,出现如下错误: 本来以为是包导入出现了问题,结果发现并不是.导入包如下: 后来在网上查找相关资料,发现这样的用法,好像也可以用, ...
- (转)mysql数据库表名批量修改大小写
由于不用服务器对mysql的表名的大小写敏感要求不一致,经常在出现线上的数据库down到了本地不能运行的情况,贴出一段代码用来批量修改数据库表名大小写. DELIMITER // DROP PROCE ...
- 【实验一 】Spring Boot 集成 hibernate & JPA
转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...
随机推荐
- usb输入子系统键盘(四)
目录 usb输入子系统键盘 设计思路 内核的上报代码 完整代码 title: usb输入子系统键盘 tags: linux date: 2018/12/20/ 17:05:08 toc: true - ...
- Django的admin视图的使用
要现在admin.py文件中将你要视图化操作的类进行注册: from django.contrib import admin from api import models # Register you ...
- 巧用border制作箭头
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 网站设置ico图标
1.用设计的png图片去在线图标网站上生成一个16*16大小的图标,命名favcon.ico放置到网站根目录下如:http://www.faviconico.org/favicon2.添加代码 < ...
- git秘钥生成
#修改git配置 vi .gitconfig #生成秘钥 ssh-keygen -t rsa -C "邮箱地址" #查看秘钥 cat id_rsa.pub
- Matplotlib画图详解
from matplotlib import pyplot as plt #调节图形大小,宽,高 plt.figure(figsize=(6,9)) #定义饼状图的标签,标签是列表 labels = ...
- window开发环境常用操作
1. 启动redis命令 redis-server redis.windows.conf 如果法正常启用,出现如下问题 windows下第一次通过以下命令启动redis (*:此处整理转载自:http ...
- webpack学习记录 二
开发网站 用polyfill(全局污染) 开发框架 用Runtime(局部污染) 在.babelrc文件中
- Datagrip连接Mysql 和Hive
连接Mysql file->data source general 填写host,port,user,password, 下载驱动,先别test connection 在ssh中填写host,p ...
- Java判断水仙花数
水仙花数 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数( ...