From 4ce4ccb1bd3879ba54ea4636470ddae9c6b179a6 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Sat, 29 Jun 2024 10:57:46 +0200 Subject: [PATCH] HHH-18316 use utf8mb4 instead of utf8 for NCHAR/NVARCHAR on MySQL Signed-off-by: Gavin King --- .../org/hibernate/dialect/MySQLDialect.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java index d107bd8939..2bdab1c8e7 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java @@ -275,15 +275,15 @@ public class MySQLDialect extends Dialect { // on MySQL 8, the nchar/nvarchar types use a deprecated character set case NCHAR: - return "char($l) character set utf8"; + return "char($l) character set utf8mb4"; case NVARCHAR: - return "varchar($l) character set utf8"; + return "varchar($l) character set utf8mb4"; // the maximum long LOB length is 4_294_967_295, bigger than any Java string case BLOB: return "longblob"; case NCLOB: - return "longtext character set utf8"; + return "longtext character set utf8mb4"; case CLOB: return "longtext"; @@ -326,7 +326,7 @@ public class MySQLDialect extends Dialect { case NCHAR: case NVARCHAR: case LONG32NVARCHAR: - return "char character set utf8"; + return "char character set utf8mb4"; case BINARY: case VARBINARY: case LONG32VARBINARY: @@ -382,10 +382,10 @@ public class MySQLDialect extends Dialect { castType( NCHAR ), this ) - .withTypeCapacity( getMaxVarcharLength(), "varchar($l) character set utf8" ) - .withTypeCapacity( maxMediumLobLen, "mediumtext character set utf8" ); + .withTypeCapacity( getMaxVarcharLength(), "varchar($l) character set utf8mb4" ) + .withTypeCapacity( maxMediumLobLen, "mediumtext character set utf8mb4" ); if ( getMaxVarcharLength() < maxLobLen ) { - nvarcharBuilder.withTypeCapacity( maxLobLen, "text character set utf8" ); + nvarcharBuilder.withTypeCapacity( maxLobLen, "text character set utf8mb4" ); } ddlTypeRegistry.addDescriptor( nvarcharBuilder.build() ); @@ -433,9 +433,9 @@ public class MySQLDialect extends Dialect { ddlTypeRegistry.addDescriptor( CapacityDependentDdlType.builder( NCLOB, columnType( NCLOB ), castType( NCHAR ), this ) - .withTypeCapacity( maxTinyLobLen, "tinytext character set utf8" ) - .withTypeCapacity( maxMediumLobLen, "mediumtext character set utf8" ) - .withTypeCapacity( maxLobLen, "text character set utf8" ) + .withTypeCapacity( maxTinyLobLen, "tinytext character set utf8mb4" ) + .withTypeCapacity( maxMediumLobLen, "mediumtext character set utf8mb4" ) + .withTypeCapacity( maxLobLen, "text character set utf8mb4" ) .build() );