我正在使用Java 7,Spring 4和Hibernate 4.我正在处理每个层中的异常,以便用户输入。
从DB附近开始,我想知道是否有办法获取列名(除了从MySQL异常中拆分String消息)或org.springframework.dao.DataIntegrityViolationException中的属性名。为了确切地知道哪个属性/列是错误的(因为我对不同的属性/列有相同的约束)。
try {
fooRepository.save(foo)
} catch(DataIntegrityViolationException e) {
if(e.getRootCause() instanceof MySQLIntegrityConstraintViolationException) {
LOGGER.error(e.getRootCause().getMessage());
}
if(e.getRootCause() instanceof MysqlDataTruncation) {
LOGGER.error(e.getRootCause().getMessage());
}
}
现在,我只能收到String消息,例如“列'FOO_BAR'的数据太长了”,是的,我可以得到列名,但我认为它可能存在一个干净的方法来做到这一点!
rootMsg.substring(rootMsg.indexOf("\'") + 1, rootMsg.lastIndexOf("\'"));
如果您需要更多解释并感谢您的帮助,请与我们联系!