如何使用Spring Boot在注释或application.properties文件中将表属性的排序规则设置为utf8_bin?
我试过很多方法,但都不管用。你能帮上忙吗?
我尝试过以下几种方法。
首先:像这样使用@Column注解:
@Column(name = "user_id",columnDefinition="VARCHAR(255) COLLATE utf8_bin")
第二:
@Column(columnDefinition="VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin")
第三:使用application.properties文件
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
第四:
spring.datasource.url =jdbc:mysql://localhost:3306/iot_schema?createDatabaseIfNotExist=true&useUnicode=true&connectionCollation=utf8_bin&characterSetResults=utf8
发布于 2019-03-05 08:37:41
这里有一个受类似问题的答案启发的解决方案:Set Table character-set/collation using Hibernate Dialect?
扩展首选的MySQL方言并覆盖其getTableTypeString()方法,如下所示:
public class MySQLCustomDialect extends MySQL8Dialect {
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin";
}
}
设置要在application.properties中使用的类
spring.jpa.properties.hibernate.dialect=my.package.MySQLCustomDialect
下面是生成的SQL查询:
create table test_table (
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
https://stackoverflow.com/questions/42430786
复制相似问题