Hibernate唯一约束异常catch

时间:2017-12-13 11:56:43

标签: hibernate jsp spring-mvc exception unique-constraint

我在一些字段中有一个带有唯一约束的简单注册,我想在.jsp页面中处理友好消息的唯一异常,但我不知道我应该在catch块中涉及哪个异常。当我尝试注册具有重复字段的用户时,我会进入控制台:

Dec 13, 2017 12:35:10 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper 
logExceptions
WARN: SQL Error: 1062, SQLState: 23000
Dec 13, 2017 12:35:10 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper 
logExceptions
ERROR: Duplicate entry 'admin1' for key 'username'
Dec 13, 2017 12:43:37 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper 
logExceptions


WARN: SQL Error: 1062, SQLState: 23000
Dec 13, 2017 12:43:37 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper 
logExceptions
ERROR: Duplicate entry 'edek' for key 'PRIMARY'

处理:

try 
{
   userService.registerUser(userAccount);
}
catch(?)
{
   // something like : 
   return new ModelAndView("register","uniqueErrorMessage",message); 
}

1 个答案:

答案 0 :(得分:0)

如果表中只有一个主键,那么在异常块中,您可以在异常消息中搜索错误代码1062(插入重复行时抛出的1062代码)并返回用户已存在的相关消息。等。

OR

您可以在插入之前执行select count(*)...where username='user entered this',如果您看到结果计数> = 1,则返回相关消息,而不是处理  插入时有例外。