diff --git a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDatabase.java b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDatabase.java index 2522c1899585..160fc6a84a5f 100644 --- a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDatabase.java +++ b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDatabase.java @@ -226,6 +226,23 @@ public boolean productNameMatches(String databaseName) { public String getDriverClassName(String jdbcUrl) { return "com.singlestore.jdbc.Driver"; } + }, + + DERBY { + @Override + public Dialect createDialect(DialectResolutionInfo info) { + return new DerbyDialect( info ); + } + @Override + public boolean productNameMatches(String databaseName) { + return "Apache Derby".equals( databaseName ); + } + @Override + public String getDriverClassName(String jdbcUrl) { + return jdbcUrl.startsWith( "jdbc:derby://" ) + ? "org.apache.derby.jdbc.ClientDriver" + : "org.apache.derby.jdbc.EmbeddedDriver"; + } }; /** diff --git a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDialectSelector.java b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDialectSelector.java index 1677cfaf5e65..25ab89990f93 100644 --- a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDialectSelector.java +++ b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CommunityDialectSelector.java @@ -50,6 +50,8 @@ public Class resolve(String name) { return TimesTenDialect.class; case "SingleStore": return SingleStoreDialect.class; + case "Derby": + return DerbyDialect.class; } return null; } diff --git a/hibernate-community-dialects/src/test/java/org/hibernate/community/dialect/CommunityDialectSelectorTest.java b/hibernate-community-dialects/src/test/java/org/hibernate/community/dialect/CommunityDialectSelectorTest.java index 962a9f557a07..bac497c8ea29 100644 --- a/hibernate-community-dialects/src/test/java/org/hibernate/community/dialect/CommunityDialectSelectorTest.java +++ b/hibernate-community-dialects/src/test/java/org/hibernate/community/dialect/CommunityDialectSelectorTest.java @@ -28,6 +28,7 @@ public void verifyAllDialectNamingResolve() { testDialectNamingResolution( TeradataDialect.class ); testDialectNamingResolution( TimesTenDialect.class ); testDialectNamingResolution( SingleStoreDialect.class ); + testDialectNamingResolution( DerbyDialect.class ); } private void testDialectNamingResolution(final Class dialectClass) {