繁体   English   中英

我在Hibernate / JPA中收到“错误,字符串或二进制数据将被截断”

[英]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的列。

这将存储该entityserialize数据。

TINYBLOB :最大长度为255个字节。

Entity serialized ,并且数据长度超过255个字节,它将引发错误

data truncation error

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM