I don’t agree with the assessment that this is a bug in the Microsoft JDBC driver. There is no requirement for a driver to automatically cast results. The problem is that SQL Server sequences are typed and can be of any integer type (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-sequence-transact-sql?view=sql-server-ver15). That is reflected in the types of the values returned when querying the schema (INFORMATION_SCHEMA.SEQUENCES). The type of value returned by the columns holding the min, max, and start sequence values reflects the type of the sequence as they are of type sql_variant. However, Hibernate assumes it always returns a Long which is an incorrect assumption. I recently had to deal with the issue and wrote a small custom dialect that works around the issue. See also: https://discourse.hibernate.org/t/java-lang-classcastexception-java-math-cannot-be-cast-to-java-lang-long-while-starting-server/4074 and https://discourse.hibernate.org/t/sql-server-could-not-fetch-the-sequenceinformation-from-the-database/4083 |