1

DuplicateKeyException延伸DataIntegrityViolationException。但是DataIntegrityViolation,如果任何唯一键约束被破坏而不是DuplicateKeyException.

我有一个订单表,其中订单代码是唯一的。当我尝试插入带有重复代码的订单时,我期待出现 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' –

有人知道这是否是预期的吗?

4

1 回答 1

-3

来自 Spring doc(对我来说似乎很清楚)

公共类 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 ]

于 2013-04-12T07:29:18.263 回答