运行休眠5时会弹出Microsoft SQL变体类型错误

时间:2019-01-15 16:42:33

标签: java sql-server hibernate

每当我运行休眠5时,都会看到此错误:

ERROR: Could not fetch the SequenceInformation from the database
com.microsoft.sqlserver.jdbc.SQLServerException: The "variant" data type is not supported.

我以前从未听说过“变量”数据类型。还是数据类型的类别?不确定。

我检查了所有表中的数据类型,这些类型是:bigint,位,日期,日期时间,int,数值,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>

3 个答案:

答案 0 :(得分:2)

我的应用程序是带有 spring-data spring-boot 2.2.7,与 hibernate-core {{ 1}}。 我正在使用:

5.4.15.Final

我尝试将 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>6.2.2.jre8</version> <scope>test</scope> </dependency> 升级到mssql-jdbc,但此错误仍然存​​在。

将休眠内核降级为8.3.1.jre8-preview后,它解决了我的问题。

感谢小费@Akin_Glen

答案 1 :(得分:1)

好的。因此,我检查了我在普通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>

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

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

不幸的是,我没有适当的凭据来向休眠团队的问题跟踪器提出这一要求。希望他们中的一个会遇到这个帖子并解决它。我知道他们正在研究冬眠搜索6和冬眠ORM 6,所以这是个好消息!

答案 2 :(得分:0)

此问题是MSSQL JDBC驱动程序中的错误,请参见

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

changelog中所述,此问题在版本> = 6.3.2

中已修复
  

修复了字符串类型为#442的sql_variant问题