【问题标题】:Hibernate: SQL error 8152 - String or binary data would be truncated休眠:SQL 错误 8152 - 字符串或二进制数据将被截断
【发布时间】:2015-10-15 12:05:57
【问题描述】:

我正在使用带有 MS SQL Server 的 Hibernate。当我尝试存储我的实体 bean 时,我不断收到:“SQL 错误 8152 sqlstate 22001”和“字符串或二进制数据将被截断”。

我在任何地方都没有发现这个问题。

【问题讨论】:

    标签: java hibernate truncate


    【解决方案1】:

    对我来说,造成这种情况的原因是试图将 太大 放入 无法容纳它

    我认为问题可能是其他问题——不——我只是检查了错误的列

    我的建议是

    1. 查找引发错误的示例
    2. 对照您的示例检查并检查每列的长度

    【讨论】:

    • 对我来说,我将 varchar(256) 更改为文本并解决了问题。
    【解决方案2】:

    我终于解决了,想在这里分享解决方案,以防其他人有同样的问题。

    通常,如果列定义得太小(例如尝试在定义为 varchar(256) 的列中存储包含 300 个字符的字符串),就会出现这种情况。但就我而言,情况不同:

    解决方法:当我在hibernate中定义带有注释的表时,我错误地定义了指向另一个表的链接。

    而不是将其定义为多对一:

    @ManyToOne
    public myEntity getMyEntity() {
      return myEntity;
    }
    

    我把它定义为普通列:

    @Column
    public myEntity getMyEntity() {
      return myEntity;
    }
    

    也许这对其他人有帮助。

    【讨论】:

    • 这为我节省了大量时间。
    猜你喜欢
    • 2019-11-11
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多