我们正在使用hibernate将我们的实体映射到数据库。
昨天我们遇到了DataTruncationException,因为注释字段没有用长度进行分配。
我们更改了实体并重新部署了应用程序。根据文档,Hibernate并没有改变那些很好的列。所以我们将数据库表手动从varchar(255)更改为longtext。
现在,entities属性注释为@Column(length = 5000)
,数据库列的格式为longtext。
每次都会出现DataTruncationException
我们决定导出所有数据,让hibernate创建一个新的数据库,然后再次插入数据。这终于奏效了,问题已经解决了。
但我们注意到,hibernate忽略了hibernate_sequence-> nextval条目并以id 1重新开始。(Hibernate在hibernate_sequnce表中创建了一个SECOND行,包含1)
删除该值并设置所需的ID后,一切似乎都没问题。
但这提出了两个问题:
为什么hibernate没有重新定义修改后的表现在与实体匹配?
为什么hibernate会在第一次运行时忽略next_val,然后重新开始?