Hibernate唯一约束异常catch

问题描述 投票:0回答:1

我在一些字段中有一个带有唯一约束的简单注册,我想在.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); 
}
hibernate jsp spring-mvc exception unique-constraint
1个回答
0
投票

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

要么

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

© www.soinside.com 2019 - 2024. All rights reserved.