diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/SQLServer2012Dialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/SQLServer2012Dialect.java index 6cfb6bed5175..e5a32322a24a 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/SQLServer2012Dialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/SQLServer2012Dialect.java @@ -49,7 +49,18 @@ public String getSequenceNextValString(String sequenceName) { @Override public String getQuerySequencesString() { // The upper-case name is necessary here so that both case-sensitive and case-insensitive collations work - return "select * from INFORMATION_SCHEMA.SEQUENCES"; + + // Internally, SQL server stores start_value, minimum_value, maximum_value, and increment + // in sql_variant columns. SQL Server's JDBC automatically converts these values + // to bigint. Vert.X does support sql_variant columns, so these columns need to be + // explicitly converted here. + + return "select sequence_name, sequence_catalog, sequence_schema, " + + "convert( bigint, start_value ) as start_value, " + + "convert( bigint, minimum_value ) as minimum_value, " + + "convert( bigint, maximum_value ) as maximum_value, " + + "convert( bigint, increment ) as increment " + + "from INFORMATION_SCHEMA.SEQUENCES"; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/SQLServerDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/SQLServerDialect.java index 96bf1aa0a0a3..0a7f86461f06 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/SQLServerDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/SQLServerDialect.java @@ -24,6 +24,7 @@ import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy; import org.hibernate.engine.jdbc.env.spi.IdentifierHelper; import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder; +import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport; import org.hibernate.type.StandardBasicTypes; import org.hibernate.type.StringType; import org.hibernate.type.Type; @@ -117,6 +118,8 @@ public IdentifierHelper buildIdentifierHelper( IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData) throws SQLException { if ( dbMetaData == null ) { + // TODO: if DatabaseMetaData != null, unquoted case strategy is set to IdentifierCaseStrategy.UPPER + // Check to see if this setting is correct. builder.setUnquotedCaseStrategy( IdentifierCaseStrategy.MIXED ); builder.setQuotedCaseStrategy( IdentifierCaseStrategy.MIXED ); } @@ -248,4 +251,10 @@ public String getCreateTemporaryTableColumnAnnotation(int sqlTypeCode) { return ""; } } + + @Override + public NameQualifierSupport getNameQualifierSupport() { + return NameQualifierSupport.BOTH; + } + }