HHH-7927 Enabling globally_quoted_identifiers breaks schema validation
if TableGenerator is used Conflicts: hibernate-core/src/test/java/org/hibernate/test/quote/QuoteGlobalTest.java
This commit is contained in:
parent
c38533c4ae
commit
350171c8ba
|
@ -1312,6 +1312,9 @@ public class Configuration implements Serializable {
|
||||||
while ( iter.hasNext() ) {
|
while ( iter.hasNext() ) {
|
||||||
PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();
|
PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();
|
||||||
Object key = generator.generatorKey();
|
Object key = generator.generatorKey();
|
||||||
|
if (key instanceof String) {
|
||||||
|
key = normalizer.normalizeIdentifierQuoting( (String) key );
|
||||||
|
}
|
||||||
if ( !databaseMetadata.isSequence( key ) && !databaseMetadata.isTable( key ) ) {
|
if ( !databaseMetadata.isSequence( key ) && !databaseMetadata.isTable( key ) ) {
|
||||||
throw new HibernateException( "Missing sequence or table: " + key );
|
throw new HibernateException( "Missing sequence or table: " + key );
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,12 @@ import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
|
||||||
|
import org.hibernate.HibernateException;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
|
@ -35,6 +41,8 @@ import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.mapping.UniqueKey;
|
import org.hibernate.mapping.UniqueKey;
|
||||||
import org.hibernate.testing.TestForIssue;
|
import org.hibernate.testing.TestForIssue;
|
||||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
import org.hibernate.tool.hbm2ddl.SchemaExport;
|
||||||
|
import org.hibernate.tool.hbm2ddl.SchemaValidator;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,6 +84,20 @@ public class QuoteGlobalTest extends BaseCoreFunctionalTestCase {
|
||||||
s.close();
|
s.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestForIssue(jiraKey = "HHH-7927")
|
||||||
|
public void testTableGeneratorQuoting() {
|
||||||
|
Configuration configuration = constructAndConfigureConfiguration();
|
||||||
|
configuration.addAnnotatedClass(TestEntity.class);
|
||||||
|
new SchemaExport(configuration).execute( false, true, false, true );
|
||||||
|
try {
|
||||||
|
new SchemaValidator(configuration).validate();
|
||||||
|
}
|
||||||
|
catch (HibernateException e) {
|
||||||
|
fail( "The identifier generator table should have validated. " + e.getMessage() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configure(Configuration cfg) {
|
protected void configure(Configuration cfg) {
|
||||||
super.configure( cfg );
|
super.configure( cfg );
|
||||||
|
@ -92,4 +114,11 @@ public class QuoteGlobalTest extends BaseCoreFunctionalTestCase {
|
||||||
House.class
|
House.class
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
private static class TestEntity {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.TABLE)
|
||||||
|
private int id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ public abstract class BaseCoreFunctionalTestCase extends BaseUnitTestCase {
|
||||||
return cfg;
|
return cfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Configuration constructAndConfigureConfiguration() {
|
protected Configuration constructAndConfigureConfiguration() {
|
||||||
Configuration cfg = constructConfiguration();
|
Configuration cfg = constructConfiguration();
|
||||||
configure( cfg );
|
configure( cfg );
|
||||||
return cfg;
|
return cfg;
|
||||||
|
|
Loading…
Reference in New Issue