![](/img/trans.png)
[英]Any way to get the column causing a com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated
[英]I get an “error, string or binary data would be truncated” with Hibernate/JPA
所以我得到一个error, string or binary data would be truncated
将从sql-server中error, string or binary data would be truncated
错误。 我正在使用休眠将数据持久保存到MS sql-server。
通常,当您收到这样的错误时,这意味着您要保存到的列不够大,无法容纳您要插入的数据。
我仔细开始进行比较,以查看域中我的BigDecimal
变量之一是否没有正确的精度,但是花了很多时间后,我才意识到情况并非如此。
原来,我在子域中缺少@ManyToOne(optional = false)
。 我的父域对象与孩子具有one to many
关系。 添加注释为我解决了这个问题。 我希望这会帮助某人看到类似的错误。
问题是: 当域中缺少ManyToOne注释时,为什么数据库会给出数据截断错误?
因为因为您没有注释字段,所以Hibernate会应用默认的映射:将字段视为可序列化的对象,该对象一旦被序列化,就会存储在二进制列中。
序列化产生的字节数组的长度对于列而言太大,因此会出现错误。
如果没有提供annotation
,则Hibernate
将应用默认映射,并创建一个数据类型为tinyblob
的列。
这将存储该entity
的serialize
数据。
TINYBLOB
:最大长度为255个字节。
Entity
serialized
,并且数据长度超过255个字节,它将引发错误
data truncation error
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.