Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate SQL字符串或二进制数据将被截断错误_Hibernate_Sql Server 2008 - Fatal编程技术网

Hibernate SQL字符串或二进制数据将被截断错误

Hibernate SQL字符串或二进制数据将被截断错误,hibernate,sql-server-2008,Hibernate,Sql Server 2008,我试图通过hibernate hibernate.save(实体)到表执行insert语句。它给出错误: SQL Error: 8152, SQLState: 22001 String or binary data would be truncated. 当我尝试在sql编辑器上执行查询时,它工作正常,但通过hibernate.save(entity)its会出现上述错误。有人能帮我解决问题吗 通常该问题与列的类型和长度有关,请检查长度是否足够大或数据类型是否兼容。当填充到int(int3

我试图通过hibernate hibernate.save(实体)到表执行insert语句。它给出错误:

 SQL Error: 8152, SQLState: 22001
String or binary data would be truncated. 

当我尝试在sql编辑器上执行查询时,它工作正常,但通过
hibernate.save(entity)
its会出现上述错误。有人能帮我解决问题吗

通常该问题与列的类型和长度有关,请检查长度是否足够大或数据类型是否兼容。当填充到int(int32)等时,可能是二进制字符串溢出。

当使用错误的sql方言时,我已经遇到了这个问题。例如,我在sql server驱动程序中使用了mysql方言


再见

问题终于解决了,实际上在我的实体中,他们的财产是:

@Column ( name = "myArray" )
private byte[] myArray;
因此,在SQL中创建类型和大小为
varBinary(255)
的表是一个短容器。为了通过hibernate实体修复它,我添加了:

@Lob
@Column ( name = "myArray" )
private byte[] myArray;

感谢:

您尝试插入的列的数据类型是什么?如何跟踪特定列?您有权访问目标服务器实例吗?如果是,请转到该服务器实例的
,查找要插入的表。如果不检查基础表,则无法使用表实体是的,我可以访问服务器,并且我知道要插入的表名,但从错误中获取的所有ididnt都是存在长度或类型问题的表的列名。它以前在postgresql中也可以正常工作,但当我切换到sqlserver时,相同的查询失败您需要钻取
实体
,我建议在
插入
失败的地方添加断点,尝试使用
insert
语句将该记录手动插入到表中,以查看到底发生了什么。检查postgresql和sql server数据库之间的数据类型是否相同。如果字段是数字,请检查两个数据库之间的数据类型的数值范围是否相同。数据库并不总是以完全相同的方式定义事物,这就是为什么更改数据库后端几乎总是一个问题,也是为什么聪明的数据库开发人员不这么做的原因。我正在为SQL Server 2012使用以下配置:driver_class:net.sourceforge.jtds.jdbc.driver dialent:org.hibernate.dialen.sqlserverdialent。。是吗?是的,这是正确的。但是你确定这个配置在正确的位置吗?是jdbc.properties文件中的方言吗?我记不太清楚了,但我认为配置位置有些问题(一个用于驱动程序,另一个用于连接)