我在一些字段中有一个带有唯一约束的简单注册,我想在.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);
}
答案 0 :(得分:0)
如果表中只有一个主键,那么在异常块中,您可以在异常消息中搜索错误代码1062
(插入重复行时抛出的1062代码)并返回用户已存在的相关消息。等。
OR
您可以在插入之前执行select count(*)...where username='user entered this'
,如果您看到结果计数> = 1,则返回相关消息,而不是处理
插入时有例外。