每当我运行休眠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>
答案 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问题