Hibernate 唯一约束异常捕获

Hibernate unique constraint exception catch

我在某些字段中有一个具有唯一约束的简单注册,我想在 .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); 
}

如果 table 中只有一个主键,那么在异常块中,您可以在异常消息和 [=18 中搜索错误代码 1062(插入重复行时抛出的 1062 代码) =] 用户已经存在的相关消息.. 等等

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