JPA 表名大小写问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: JPA 表名大小写问题

JPA 默认会将实体中的 TABLE_NAME 转成小写如

@Entity
@Table(name = "EMPLOYEE")
public class Employee {
    @Id
    private String id;

会报:java.sql.SQLSyntaxErrorException: Table 'mysql.employee' doesn't exist 表名已经被转成了小写

可以添加一个策略解决此问题

package com.iron.config;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
/**
 * Created by Jimmy on 2020/3/13.
*/
public class UpperTableStrategy 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);
    }
}

application.yml 配置文件中添加相应的配置,启用上面的策略

server:
  port: 8081
spring:
  jpa:
    show-sql: true
    hibernate:
      naming:
        physical-strategy: com.iron.config.UpperTableStrategy
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.17.127.53:3306/mysql?Unicode=true&characterEncoding=UTF-8
    username: root
    password: 123
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL
mysql列名名称包含特殊字符的处理
上问题    不做处理的话会报错,识别不了 处理方式就是 需要把列名以反引号“`”(一般键盘的左上角数字1左边的那个键)来处理。 即查询语句为 欢迎大家一起说出自己的想法。
2631 0
|
关系型数据库 MySQL
Mysql查询是否区分大小写?
Mysql查询是否区分大小写?
125 0
|
JavaScript Python
一日一技:XPath 匹配如何忽略大小写?
一日一技:XPath 匹配如何忽略大小写?
444 0
一日一技:XPath 匹配如何忽略大小写?
|
关系型数据库 MySQL PHP
MYSQL表中某个字段有换行符、回车符替换成空字符串
mysql某个字段,带引号查不出来,不带引号却可以查出来,有可能就是因为这个字段有换行或者回车符
591 0
MYSQL表中某个字段有换行符、回车符替换成空字符串
|
SQL 数据库
SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
一、实例介绍 SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下: 例: --> 创建表,插入数据: declare @maco table (number int,myvalue varchar(2)) insert into @maco select 1,'aa' ...
1445 0