diff --git a/src/main/java/io/ebean/config/AbstractNamingConvention.java b/src/main/java/io/ebean/config/AbstractNamingConvention.java index 870c2e2b2..96b112ebd 100644 --- a/src/main/java/io/ebean/config/AbstractNamingConvention.java +++ b/src/main/java/io/ebean/config/AbstractNamingConvention.java @@ -83,10 +83,13 @@ public abstract class AbstractNamingConvention implements NamingConvention { } @Override - public String getSequenceName(String tableName, String pkColumn) { - String s = TABLE_REPLACE.matcher(sequenceFormat).replaceAll(Matcher.quoteReplacement(tableName)); + public String getSequenceName(String rawTableName, String pkColumn) { + final String tableNameUnquoted = databasePlatform.unQuote(rawTableName); + String s = TABLE_REPLACE.matcher(sequenceFormat).replaceAll(Matcher.quoteReplacement(tableNameUnquoted)); if (pkColumn == null) { pkColumn = ""; + } else { + pkColumn = databasePlatform.unQuote(pkColumn); } return COLUMN_REPLACE.matcher(s).replaceAll(Matcher.quoteReplacement(pkColumn)); } diff --git a/src/main/java/io/ebean/config/MatchingNamingConvention.java b/src/main/java/io/ebean/config/MatchingNamingConvention.java index 43e599884..0b741994a 100644 --- a/src/main/java/io/ebean/config/MatchingNamingConvention.java +++ b/src/main/java/io/ebean/config/MatchingNamingConvention.java @@ -36,8 +36,7 @@ public class MatchingNamingConvention extends AbstractNamingConvention { @Override public TableName getTableNameByConvention(Class beanClass) { - - return new TableName(getCatalog(), getSchema(), beanClass.getSimpleName()); + return new TableName(quoteIdentifiers(getCatalog()), quoteIdentifiers(getSchema()), quoteIdentifiers(beanClass.getSimpleName())); } @Override diff --git a/src/test/java/io/ebean/config/MatchingNamingConventionTest.java b/src/test/java/io/ebean/config/MatchingNamingConventionTest.java index 9cd9317b7..121748674 100644 --- a/src/test/java/io/ebean/config/MatchingNamingConventionTest.java +++ b/src/test/java/io/ebean/config/MatchingNamingConventionTest.java @@ -3,8 +3,11 @@ package io.ebean.config; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.sqlserver.SqlServer17Platform; import org.junit.Test; +import org.tests.model.basic.Customer; -import static org.assertj.core.api.StrictAssertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; public class MatchingNamingConventionTest { @@ -15,22 +18,47 @@ public class MatchingNamingConventionTest { this.namingConvention.setDatabasePlatform(new H2Platform()); } - @Test - public void getColumnFromProperty_when_allQuoted() { - + private MatchingNamingConvention createMatchingNamingConventionAllQuoted() { SqlServer17Platform platform = new SqlServer17Platform(); PlatformConfig config = new PlatformConfig(); config.setAllQuotedIdentifiers(true); platform.configure(config); - NamingConvention nc = new MatchingNamingConvention(); + MatchingNamingConvention nc = new MatchingNamingConvention(); nc.setDatabasePlatform(platform); + return nc; + } + + @Test + public void getColumnFromProperty_when_allQuoted() { + + MatchingNamingConvention nc = createMatchingNamingConventionAllQuoted(); assertThat(nc.getColumnFromProperty(null, "bridgetabUserId")).isEqualTo("[bridgetabUserId]"); assertThat(nc.getColumnFromProperty(null, "order")).isEqualTo("[order]"); } + @Test + public void getTableNameByConvention_when_allQuoted() { + + MatchingNamingConvention nc = createMatchingNamingConventionAllQuoted(); + + final TableName tableName = nc.getTableNameByConvention(Customer.class); + assertEquals("[Customer]", tableName.getName()); + assertNull(tableName.getCatalog()); + assertNull(tableName.getSchema()); + } + + + @Test + public void getSequenceName() { + MatchingNamingConvention nc = createMatchingNamingConventionAllQuoted(); + + final String sequenceName = nc.getSequenceName("[Customer]", null); + assertEquals("Customer_seq", sequenceName); + } + @Test public void getColumnFromProperty() {