diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/Database.java b/hibernate-core/src/main/java/org/hibernate/dialect/Database.java index cb24d2ea2839..6c8cba228f19 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/Database.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/Database.java @@ -42,11 +42,15 @@ public Dialect createDialect(DialectResolutionInfo info) { return new DB2zDialect( info ); } case "QSQ": { - // i + // i, this only works if "use drda metadata version" property is set to true in the drivers properties return new DB2iDialect( info ); } } } + if ("DB2 UDB for AS/400".equals(info.getDatabaseName())) { + // i + return new DB2iDialect( info ); + } return new DB2Dialect( info ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/dialect/resolver/DialectFactoryTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/dialect/resolver/DialectFactoryTest.java index 4177c403659a..228d205577bc 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/dialect/resolver/DialectFactoryTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/dialect/resolver/DialectFactoryTest.java @@ -149,8 +149,8 @@ public void testPreregisteredDialects() { testDetermination( "DB2/SUN", DB2Dialect.class, resolver ); testDetermination( "DB2/LINUX390", DB2Dialect.class, resolver ); testDetermination( "DB2/AIX64", DB2Dialect.class, resolver ); - testDetermination( "DB2 UDB for AS/400", DB2Dialect.class, resolver ); - testDetermination( "DB2 UDB for AS/400", 7, 3, DB2Dialect.class, resolver ); + testDetermination( "DB2 UDB for AS/400", DB2iDialect.class, resolver ); + testDetermination( "DB2 UDB for AS/400", 7, 3, DB2iDialect.class, resolver ); testDetermination( "Oracle", 8, OracleDialect.class, resolver ); testDetermination( "Oracle", 9, OracleDialect.class, resolver ); testDetermination( "Oracle", 10, OracleDialect.class, resolver );