运行 hibernate 5 时弹出 Microsoft SQL 变体类型错误

Aki*_*len 6 java sql-server hibernate

每当我运行 hibernate 5 时,都会看到以下错误:

ERROR: Could not fetch the SequenceInformation from the database
com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported.
Run Code Online (Sandbox Code Playgroud)

我以前从未听说过“变体”数据类型。或者它是数据类型的一个类别?没有把握。

我检查了所有表中的数据类型,这些是存在的:bigint、bit、date、datetime、int、numeric、varbinary 和 varchar。

这个错误可能来自哪里?还有其他地方我应该检查变体类型吗?

编辑:

我运行此查询select distinct data_type from INFORMATION_SCHEMA.COLUMNS以获取数据库中的所有数据类型,但未显示 sql 变体。这就是我确定没有的方式。

还有其他地方可以参考吗?

编辑2:

关于这一点的更多信息。该应用程序是一个 Maven 项目。我创建了一个普通的 java 项目并对同一个数据库运行了相同的代码,我没有收到任何关于 sql 变体类型的错误。

所以这个问题似乎与休眠依赖有关。我不明白,真的。这是我正在使用的依赖项:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.0.Final</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

Aki*_*len 6

好吧。所以,我检查了我在普通 Java 应用程序中使用的库,它是 Hibernate 5.3.7。我在 Maven 应用程序中使用的是 5.4.0。

因此,我将 Maven 应用程序中的休眠库更改为:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.3.7.Final</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

现在一切正常。没有抱怨一些奇怪的 Sql Variant 类型。

此问题也会影响 Hibernate 搜索 5.11.0。您应该使用 5.10.5.Final。

不幸的是,我没有适当的凭据在他们的问题跟踪器上向 hibernate 团队提出这个问题。希望他们中的一个人会看到这篇文章并解决它。我知道他们正在研究 hibernate search 6 和 hibernate ORM 6,所以这是个好消息!


Mat*_* M. 5

此问题是 MSSQL JDBC-Driver 中的错误,请参阅

https://github.com/microsoft/mssql-jdbc/pull/442

更改日志中所述,这对于版本 >=6.3.2 已修复

修复了 String 类型的 sql_variant 问题 #442