![](/img/trans.png)
[英]Why does Spring throw “IllegalStateException: No ServletContext set” when using a WebApplicationInitializer
[英]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.