首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Spring Boot在批注或application.properties文件中将表属性的排序规则设置为utf8_bin

如何使用Spring Boot在批注或application.properties文件中将表属性的排序规则设置为utf8_bin
EN

Stack Overflow用户
提问于 2017-02-24 12:28:33
回答 1查看 4.2K关注 0票数 9

如何使用Spring Boot在注释或application.properties文件中将表属性的排序规则设置为utf8_bin?

我试过很多方法,但都不管用。你能帮上忙吗?

我尝试过以下几种方法。

首先:像这样使用@Column注解:

代码语言:javascript
复制
@Column(name = "user_id",columnDefinition="VARCHAR(255) COLLATE utf8_bin")

第二:

代码语言:javascript
复制
 @Column(columnDefinition="VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin")

第三:使用application.properties文件

代码语言:javascript
复制
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.connection.collationConnection=utf8_bin

第四:

代码语言:javascript
复制
spring.datasource.url =jdbc:mysql://localhost:3306/iot_schema?createDatabaseIfNotExist=true&useUnicode=true&connectionCollation=utf8_bin&characterSetResults=utf8
EN

回答 1

Stack Overflow用户

发布于 2019-03-05 08:37:41

这里有一个受类似问题的答案启发的解决方案:Set Table character-set/collation using Hibernate Dialect?

扩展首选的MySQL方言并覆盖其getTableTypeString()方法,如下所示:

代码语言:javascript
复制
public class MySQLCustomDialect extends MySQL8Dialect {
    @Override
    public String getTableTypeString() {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin";
    }
}

设置要在application.properties中使用的类

代码语言:javascript
复制
spring.jpa.properties.hibernate.dialect=my.package.MySQLCustomDialect

下面是生成的SQL查询:

代码语言:javascript
复制
    create table test_table (
      ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42430786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档