繁体   English   中英

当发生MySQLIntegrityConstraintViolationException时,为什么Spring Framework不会抛出DuplicateKeyException?

[英]Why Spring Framework does not throw DuplicateKeyException when MySQLIntegrityConstraintViolationException occurs?

DuplicateKeyException扩展了DataIntegrityViolationException 但是,如果打破了任何唯一键约束而不是DuplicateKeyException ,Spring框架将抛出DataIntegrityViolation Exception。

我有一个订单表,其中的订单代码是唯一的。 当我尝试插入具有重复代码的订单时,我期望出现DuplicateKeyException,但是我正在获取DataIntegrityViolationException。

这是堆栈跟踪:

org.springframework.dao.DataIntegrityViolationException: Duplicate entry '1-561336327' for key 'code_UNIQUE'; SQL [n/a]; constraint [null]; nested exception is 
org.hibernate.exception.ConstraintViolationException: Duplicate entry '1-561336327' for key 'code_UNIQUE' 
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-561336327' for key 'code_UNIQUE' –

有人知道这是否可以预期吗?

从Spring文档中(对我来说似乎很清楚)

公共类DuplicateKeyException扩展了DataIntegrityViolationException

当尝试插入或更新数据导致违反主键或唯一约束时,引发异常。 注意,这不一定是纯粹的关系概念; 大多数数据库类型都需要唯一的主键。 [ http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/dao/DuplicateKeyException.html ]

公共类DataIntegrityViolationException扩展了NonTransientDataAccessException

当尝试插入或更新数据导致违反完整性约束时引发异常。 注意,这不是纯粹的关系概念。 大多数数据库类型都需要唯一的主键。 [ http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/dao/DataIntegrityViolationException.html ]

暂无
暂无

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

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