我们如何在Spring Hibernate中解决DataIntegrityViolationException?

时间:2010-12-10 14:58:53

标签: hibernate spring

我正在使用Spring Hibernate和HibernateSupportDao,当我尝试发送多行数据存储在我的数据库中时,它会在特定行引发DataIntegrityViolationException。同一个方案在同一个表上保留在任务中。即使我对当前任务使用相同的代码,我也不会遇到问题。为什么抛出DataIntegrityViolationException,我该如何纠正?

5 个答案:

答案 0 :(得分:7)

Directly from the API

  

尝试插入或更新数据导致违反完整性约束时抛出异常。请注意,这不仅仅是一个关系概念;大多数数据库类型都需要唯一的主键。

基本上它意味着hibernate试图做某事,但数据库引发了异常。最常见的情况可能是您正在删除父级但不删除具有该父级外键的子级。

您的传递持久性(即级联)设置是什么?

答案 1 :(得分:3)

当从表中选择某些字段时遇到此异常,原因可能是select语句中某个字段的长度。检查所有选择的字段长度,并将其与表格描述进行比较。任何字段都会违反字段限制。

答案 2 :(得分:1)

DataIntegrityViolationException也可能违反数据库上的唯一约束(即备用密钥)。如果插入的数据行包含违反此类唯一约束的重复数据,请检查。

答案 3 :(得分:0)

如果您从某个地方导入数据库,那么您也必须使用服务器的数据文件夹,并将此数据文件夹更改为您服务器的数据文件夹。< / p>

答案 4 :(得分:0)

我在ExceptionInfoHandler中处理DataIntegrityViolationException,在根本原因消息中查找DB约束,并通过以下方式将其转换为i18n消息 地图。请参阅此处的代码:https://stackoverflow.com/a/42422568/548473