mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-24 03:57:45 +00:00
#1827 - @UniqueConstraint columnNames should be respecting ebean.allQuotedIdentifiers
This commit is contained in:
@@ -134,12 +134,12 @@ public class AnnotationClass extends AnnotationParser {
|
||||
}
|
||||
|
||||
for (Index index : findAnnotationsRecursive(cls, Index.class)) {
|
||||
descriptor.addIndex(new IndexDefinition(index.columnNames(), index.name(), index.unique()));
|
||||
descriptor.addIndex(new IndexDefinition(convertColumnNames(index.columnNames()), index.name(), index.unique()));
|
||||
}
|
||||
|
||||
UniqueConstraint uc = findAnnotationRecursive(cls, UniqueConstraint.class);
|
||||
if (uc != null) {
|
||||
descriptor.addIndex(new IndexDefinition(uc.columnNames()));
|
||||
descriptor.addIndex(new IndexDefinition(convertColumnNames(uc.columnNames())));
|
||||
}
|
||||
|
||||
View view = findAnnotationRecursive(cls, View.class);
|
||||
@@ -150,7 +150,7 @@ public class AnnotationClass extends AnnotationParser {
|
||||
if (table != null) {
|
||||
UniqueConstraint[] uniqueConstraints = table.uniqueConstraints();
|
||||
for (UniqueConstraint c : uniqueConstraints) {
|
||||
descriptor.addIndex(new IndexDefinition(c.columnNames()));
|
||||
descriptor.addIndex(new IndexDefinition(convertColumnNames(c.columnNames())));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -103,8 +103,7 @@ public abstract class AnnotationParser extends AnnotationBase {
|
||||
void readColumn(Column columnAnn, DeployBeanProperty prop) {
|
||||
|
||||
if (!isEmpty(columnAnn.name())) {
|
||||
String dbColumn = databasePlatform.convertQuotedIdentifiers(columnAnn.name());
|
||||
prop.setDbColumn(dbColumn);
|
||||
prop.setDbColumn(databasePlatform.convertQuotedIdentifiers(columnAnn.name()));
|
||||
}
|
||||
|
||||
prop.setDbInsertable(columnAnn.insertable());
|
||||
@@ -138,4 +137,11 @@ public abstract class AnnotationParser extends AnnotationBase {
|
||||
}
|
||||
return groups.length == 0 || groups.length == 1 && Default.class.isAssignableFrom(groups[0]);
|
||||
}
|
||||
|
||||
String[] convertColumnNames(String[] columnNames) {
|
||||
for (int i = 0; i < columnNames.length; i++) {
|
||||
columnNames[i] = databasePlatform.convertQuotedIdentifiers(columnNames[i]);
|
||||
}
|
||||
return columnNames;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package io.ebeaninternal.server.deploy.parse;
|
||||
|
||||
import io.ebean.config.ServerConfig;
|
||||
import io.ebean.config.dbplatform.sqlserver.SqlServer17Platform;
|
||||
import io.ebeaninternal.server.core.bootup.BootupClasses;
|
||||
import io.ebeaninternal.server.deploy.meta.DeployBeanDescriptor;
|
||||
import io.ebeaninternal.server.type.DefaultTypeManager;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
public class AnnotationClassTest {
|
||||
|
||||
@Test
|
||||
public void convertColumnNames_when_AllQuotedIdentifiersIsTrue() {
|
||||
|
||||
AnnotationClass annotationClass = createAnnotationClass(sqlServerPlatform(true));
|
||||
|
||||
String[] colNames = {"Col1", "Col2"};
|
||||
|
||||
final String[] columnNames = annotationClass.convertColumnNames(colNames);
|
||||
|
||||
assertThat(columnNames.length).isEqualTo(2);
|
||||
assertThat(columnNames[0]).isEqualTo("[Col1]");
|
||||
assertThat(columnNames[1]).isEqualTo("[Col2]");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertColumnNames_when_AllQuotedIdentifiersIsFalse() {
|
||||
|
||||
AnnotationClass annotationClass = createAnnotationClass(sqlServerPlatform(false));
|
||||
|
||||
String[] colNames = {"Col1", "`Col2`", "col3"};
|
||||
|
||||
final String[] columnNames = annotationClass.convertColumnNames(colNames);
|
||||
|
||||
assertThat(columnNames.length).isEqualTo(3);
|
||||
assertThat(columnNames[0]).isEqualTo("Col1");
|
||||
assertThat(columnNames[1]).isEqualTo("[Col2]");
|
||||
assertThat(columnNames[2]).isEqualTo("col3");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private AnnotationClass createAnnotationClass(ServerConfig config) {
|
||||
|
||||
DeployUtil deployUtil = new DeployUtil(new DefaultTypeManager(config, new BootupClasses()), config);
|
||||
|
||||
DeployBeanInfo deployBeanInfo = new DeployBeanInfo(deployUtil, mock(DeployBeanDescriptor.class));
|
||||
ReadAnnotationConfig readAnnotationConfig = mock(ReadAnnotationConfig.class);
|
||||
|
||||
return new AnnotationClass(deployBeanInfo, readAnnotationConfig);
|
||||
}
|
||||
|
||||
private ServerConfig sqlServerPlatform(boolean allQuotedIdentifiers) {
|
||||
|
||||
SqlServer17Platform sqlServer17Platform = new SqlServer17Platform();
|
||||
ServerConfig config = new ServerConfig();
|
||||
config.setDatabasePlatform(sqlServer17Platform);
|
||||
config.setAllQuotedIdentifiers(allQuotedIdentifiers);
|
||||
|
||||
sqlServer17Platform.configure(config.getPlatformConfig());
|
||||
return config;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user