Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决Spring Hibernate中的DataIntegrityViolationException?_Hibernate_Spring - Fatal编程技术网

如何解决Spring Hibernate中的DataIntegrityViolationException?

如何解决Spring Hibernate中的DataIntegrityViolationException?,hibernate,spring,Hibernate,Spring,我将Spring Hibernate与HibernateSupportDao一起使用,当我尝试发送多行数据以存储在我的数据库中时,它会在特定行引发一个DataIntegrityViolationException。相同的场景在同一个表上的保留任务中起作用。即使对当前任务使用相同的代码,我也不会遇到问题。为什么抛出了一个DataIntegrityViolationException,我该如何纠正 : 当尝试插入或更新数据导致违反完整性约束时引发异常。注意,这不是一个纯粹的关系概念;大多数数据库类型

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

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

基本上,这意味着Hibernate试图做一些事情,但数据库引发了一个异常。最常见的情况可能是删除父级,但不删除具有该父级外键的子级


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

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

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

如果从某个地方导入数据库,则还必须获取服务器的数据文件夹,并将此数据文件夹更改为服务器的数据文件夹。

我在ExceptionInfo处理程序中处理DataIntegrityViolationException,在根本原因消息中查找出现的DB约束,并通过
地图。请参见此处的代码:

此处我使用Spring hiernate注释,并维护表之间的关系,我将多个表与fetch模式的关系保持为“急切”。这里的一点是,当我在同一个表上进行其他操作时,比如,我在获取表的数据并在提交时进行一些修改,之前的全部数据必须删除,而我修改的新数据将被存储。此任务已成功运行。在这种情况下,我还可以在页面中添加新行。关于这一点的问题。处理来自db而不是应用程序本身的重复验证是否是一种好的做法?两者都可以,但只有db知道它是否重复。如果没有db,您将如何处理应用程序中的验证?