我需要在Spring 3.0应用程序中显示自定义消息。我有一个带有Hibernate的数据库,并且有几个约束。我对DataIntegrityViolationException应该如何妥善处理存有疑问。我想知道是否有一种方法可以将异常映射到属性文件中的消息集,因为可以在约束验证中进行。我可以以任何方式自动处理它,还是必须在每个控制器中捕获此异常?
DataIntegrityViolationException
在违反约束的情况下显示用户友好消息的问题是,当将Hibernate的名称ConstraintViolationException转换为Spring的名称时,约束名称会丢失DataIntegrityViolationException。
ConstraintViolationException
但是,你可以自定义此转换逻辑。如果LocalSessionFactoryBean用于访问Hibernate,则可以为其提供一个自定义项SQLExceptionTranslator(请参阅参考资料LocalSessionFactoryBean.jdbcExceptionTranslator)。该异常转换器可以将a ConstraintViolationException转换为你自己的异常类,并保留约束名称。
LocalSessionFactoryBean
SQLExceptionTranslator
LocalSessionFactoryBean.jdbcExceptionTranslator