HHH-10197 - Fix SchemaManagementException when performing SchemaUpdate
This commit is contained in:
parent
dc902bb0a3
commit
d44cb40c34
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.boot.model.naming;
|
||||
|
||||
import org.hibernate.internal.util.StringHelper;
|
||||
|
||||
/**
|
||||
* Models an identifier (name), retrieved from the database.
|
||||
*
|
||||
* @author Andrea Boriero
|
||||
*/
|
||||
public class DatabaseIdentifier extends Identifier {
|
||||
/**
|
||||
* Constructs a datatabase identifier instance.
|
||||
*
|
||||
* @param text The identifier text.
|
||||
*/
|
||||
public DatabaseIdentifier(String text) {
|
||||
super( text, false );
|
||||
}
|
||||
|
||||
public static DatabaseIdentifier toIdentifier(String text) {
|
||||
if ( StringHelper.isEmpty( text ) ) {
|
||||
return null;
|
||||
}
|
||||
return new DatabaseIdentifier( text );
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import java.util.Locale;
|
|||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.hibernate.boot.model.naming.DatabaseIdentifier;
|
||||
import org.hibernate.boot.model.naming.Identifier;
|
||||
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
||||
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
||||
|
@ -122,6 +123,10 @@ public class NormalizingIdentifierHelperImpl implements IdentifierHelper {
|
|||
throw new IllegalArgumentException( "Identifier cannot be null; bad usage" );
|
||||
}
|
||||
|
||||
if ( identifier instanceof DatabaseIdentifier ) {
|
||||
return identifier.getText();
|
||||
}
|
||||
|
||||
if ( identifier.isQuoted() ) {
|
||||
switch ( quotedCaseStrategy ) {
|
||||
case UPPER: {
|
||||
|
|
|
@ -18,6 +18,7 @@ import java.util.StringTokenizer;
|
|||
|
||||
import org.hibernate.JDBCException;
|
||||
import org.hibernate.boot.model.TruthValue;
|
||||
import org.hibernate.boot.model.naming.DatabaseIdentifier;
|
||||
import org.hibernate.boot.model.naming.Identifier;
|
||||
import org.hibernate.boot.model.relational.QualifiedTableName;
|
||||
import org.hibernate.cfg.AvailableSettings;
|
||||
|
@ -647,6 +648,7 @@ public class InformationExtractorJdbcDatabaseMetaDataImpl implements Information
|
|||
return fks;
|
||||
}
|
||||
|
||||
|
||||
private ForeignKeyBuilder generateForeignKeyBuilder(Identifier fkIdentifier) {
|
||||
return new ForeignKeyBuilderImpl( fkIdentifier );
|
||||
}
|
||||
|
@ -688,10 +690,10 @@ public class InformationExtractorJdbcDatabaseMetaDataImpl implements Information
|
|||
final String incomingSchemaName = resultSet.getString( prefix + "TABLE_SCHEM" );
|
||||
final String incomingTableName = resultSet.getString( prefix + "TABLE_NAME" );
|
||||
|
||||
return new QualifiedTableName(
|
||||
identifierHelper().toIdentifier( incomingCatalogName ),
|
||||
identifierHelper().toIdentifier( incomingSchemaName ),
|
||||
identifierHelper().toIdentifier( incomingTableName )
|
||||
);
|
||||
final DatabaseIdentifier catalog = DatabaseIdentifier.toIdentifier( incomingCatalogName );
|
||||
final DatabaseIdentifier schema = DatabaseIdentifier.toIdentifier( incomingSchemaName );
|
||||
final DatabaseIdentifier table = DatabaseIdentifier.toIdentifier( incomingTableName );
|
||||
|
||||
return new QualifiedTableName( catalog, schema, table );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue