Java 如果电子邮件地址已经存在,则使用Springboot和Jpa引发异常
我想创建一个表单,我可以提交它和h2中的数据存储。如果电子邮件地址已在h2中,则引发异常。我有四个包(控制器、模型、服务、存储库)。当我使用h2中已经存在的电子邮件时,我不会收到异常消息。你能帮我解决问题吗 控制器类:Java 如果电子邮件地址已经存在,则使用Springboot和Jpa引发异常,java,spring-boot,jpa,Java,Spring Boot,Jpa,我想创建一个表单,我可以提交它和h2中的数据存储。如果电子邮件地址已在h2中,则引发异常。我有四个包(控制器、模型、服务、存储库)。当我使用h2中已经存在的电子邮件时,我不会收到异常消息。你能帮我解决问题吗 控制器类: @RestController public class RegistrationController { @Autowired private RegistrationService service; @PostMapping("/regi
@RestController
public class RegistrationController {
@Autowired
private RegistrationService service;
@PostMapping("/registeruser")
public User registerUser(@RequestBody User user) throws Exception {
String tempEmailId = user.getEmailId();
if(tempEmailId !=null && !"".equals(tempEmailId)) {
User userObject = service.fetchUserByEmailId(tempEmailId);
if(userObject!=null) {
throw new Exception("User with "+tempEmailId+" is already exist");
}
}
User userObject = null;
userObject = service.saveUser(user);
return userObject;
}
存储库:
public interface RegistrationRepository extends JpaRepository<User, Integer> {
public User findByEmailId(String emailId);
}
以下是JSON响应,因此我希望打印我的消息,但不知何故不会发生:
{
"timestamp": "2020-08-26T06:28:01.369+00:00",
"status": 500,
"error": "Internal Server Error",
"message": "",
"path": "/registeruser"
}
和我遇到的问题一样。我所做的不是检查if条件中的对象,而是最好尝试检查对象的属性。 如
if(userObject.getEmailId().isEmpty()){抛出新异常(“具有“+tempEmailId+”的用户已存在”);}
这对我很有效。我遇到了同样的问题。我所做的不是检查if条件中的对象,而是最好尝试检查对象的属性。 如
if(userObject.getEmailId().isEmpty()){抛出新异常(“具有“+tempEmailId+”的用户已存在”);}
这对我很有用。您可以配置Spring ExceptionHandler,以自定义带有异常消息的响应正文:
@ControllerAdvice
public class GlobalExceptionMapper extends ResponseEntityExceptionHandler {
@Autowired
public GlobalExceptionMapper() {
}
@ExceptionHandler(value = {Exception.class})
protected ResponseEntity<Object> handleBusinessException(Exception ex, WebRequest request) {
return handleExceptionInternal(ex, ex.getMessage(), new HttpHeaders(), HttpStatus.BAD_REQUEST, request);
}
@ControllerAdvice
公共类GlobalExceptionMapper扩展了ResponseEntityExceptionHandler{
@自动连线
公共GlobalExceptionMapper(){
}
@ExceptionHandler(值={Exception.class})
受保护的响应手柄业务异常(异常,例如WebRequest){
返回handleExceptionInternal(例如,例如getMessage(),new HttpHeaders(),HttpStatus.BAD_请求,请求);
}
您可以配置Spring ExceptionHandler,以自定义带有异常消息的响应正文:
@ControllerAdvice
public class GlobalExceptionMapper extends ResponseEntityExceptionHandler {
@Autowired
public GlobalExceptionMapper() {
}
@ExceptionHandler(value = {Exception.class})
protected ResponseEntity<Object> handleBusinessException(Exception ex, WebRequest request) {
return handleExceptionInternal(ex, ex.getMessage(), new HttpHeaders(), HttpStatus.BAD_REQUEST, request);
}
@ControllerAdvice
公共类GlobalExceptionMapper扩展了ResponseEntityExceptionHandler{
@自动连线
公共GlobalExceptionMapper(){
}
@ExceptionHandler(值={Exception.class})
受保护的响应手柄业务异常(异常,例如WebRequest){
返回handleExceptionInternal(例如,例如getMessage(),new HttpHeaders(),HttpStatus.BAD_请求,请求);
}
如果您使用的是Spring Boot 2.3或更高版本,则必须在应用程序.properties
文件中将属性服务器.error.include message
设置为始终。如果您使用的是Spring Boot 2.3或更高版本,则属性服务器.error.include message
必须设置为始终<代码>应用程序.properties
文件。忽略500错误。我想在“消息”中输入“+tempEmailId+”的“JSON打印”用户已经存在“忽略500错误”。我想在“消息”中输入“+tempEmailId+”的“JSON打印”用户已经存在”你能检查userObject、tempEmailId是否存在吗?记录这些值并首先检查它们。我可以在eclipse控制台中获得异常消息,但在postman中测试时,我没有得到消息。下面是eclipse控制台中的消息:java.lang.Exception:User withhosss@gmail.com是否已经存在?是否可以检查userObject、tempEmailId是存在的。记录这些值并首先检查它们。我可以在eclipse控制台中获取异常消息,但当我在postman中测试它时,我没有得到消息。下面是eclipse控制台中的消息:java.lang.Exception:User withhosss@gmail.com已经存在。谢谢您的建议。您能告诉我消息为什么不是用JSON打印的吗?I可以在eclipse控制台中获取异常消息,但是当我在postman中测试它时,我没有得到消息hosss@gmail.com已经存在谢谢你的建议。你能告诉我消息为什么没有用JSON打印吗?我可以在eclipse控制台中得到异常消息,但是什么时候我在postman中测试它,我没有得到消息hosss@gmail.com它已经存在了