java.util.NoSuchElementException:尝试检查emailID是否已在POSTGRES数据库中注册时,未引发值显示异常
我是Spring boot新手,我尝试使用未注册的emailID检查Postgres数据库中是否存在给定的电子邮件id。但不幸的是,我得到了这一点。我在这里附上了一个例外屏幕截图供您参考。你们能帮我解决这个问题吗 TipTopController.javajava.util.NoSuchElementException:尝试检查emailID是否已在POSTGRES数据库中注册时,未引发值显示异常,java,spring-boot,hibernate,spring-data-jpa,Java,Spring Boot,Hibernate,Spring Data Jpa,我是Spring boot新手,我尝试使用未注册的emailID检查Postgres数据库中是否存在给定的电子邮件id。但不幸的是,我得到了这一点。我在这里附上了一个例外屏幕截图供您参考。你们能帮我解决这个问题吗 TipTopController.java @RestController @RequestMapping(path = "/user") public class TipTopController { @Autowired private Use
@RestController
@RequestMapping(path = "/user")
public class TipTopController {
@Autowired
private UserService userService;
@PostMapping(path = "/registration")
public ResponseEntity<UserRegistrationResponse> registration(@RequestBody UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = userService.doUserRegistration(userRegistrationModel);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("description","User created successfully");
return ResponseEntity.status(HttpStatus.OK)
.headers(httpHeaders)
.body(userRegistrationResponse);
}
}
@Service
public class UserService {
private static final Logger logger = LogManager.getLogger(UserService.class);
@Autowired
private UserRepository userRepository;
@Transactional
public UserRegistrationResponse doUserRegistration(UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = new UserRegistrationResponse();
try{
logger.info("Entering into try block");
Optional<UserInformationRepo> userInformationRepo=userRepository.findById(userRegistrationModel.getEmail());
logger.info("Get value is "+userInformationRepo.get().getEmail());
logger.info("Username is "+userInformationRepo.get().getFirstName()+" "+userInformationRepo.get().getLastName());
if(userInformationRepo.isPresent()){
userRegistrationResponse.setStatus(false);
userRegistrationResponse.setMessage("This email id { "+userRegistrationModel.getEmail()+" } is taken by another user already");
}
else{
UserInformationRepo userInformationRepoSave = new UserInformationRepo();
userInformationRepoSave.setEmail(userRegistrationModel.getEmail());
userInformationRepoSave.setFirstName(userRegistrationModel.getFirstName());
userInformationRepoSave.setEmail(userRegistrationModel.getLastName());
userInformationRepoSave.setEmail(userRegistrationModel.getPassword());
userRepository.save(userInformationRepoSave);
userRegistrationResponse.setStatus(true);
userRegistrationResponse.setMessage("New user account created with your " + userRegistrationModel.getEmail() + " emailId");
}
}
catch (Exception e){
logger.error(e.getMessage()+"*****"+e);
System.out.println("Exception occurred");
}
return userRegistrationResponse;
}
}
@Entity
@Table(name = "USER_INFORMATION")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserInformationRepo {
@Id
@Column(name = "EMAIL")
private String email;
@Column(name="FIRSTNAME")
private String firstName;
@Column(name="LASTNAME")
private String lastName;
@Column(name="PASSWORD")
private String password;
}
@Repository
public interface UserRepository extends JpaRepository<UserInformationRepo, String> {
}
UserRepository.java
@RestController
@RequestMapping(path = "/user")
public class TipTopController {
@Autowired
private UserService userService;
@PostMapping(path = "/registration")
public ResponseEntity<UserRegistrationResponse> registration(@RequestBody UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = userService.doUserRegistration(userRegistrationModel);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("description","User created successfully");
return ResponseEntity.status(HttpStatus.OK)
.headers(httpHeaders)
.body(userRegistrationResponse);
}
}
@Service
public class UserService {
private static final Logger logger = LogManager.getLogger(UserService.class);
@Autowired
private UserRepository userRepository;
@Transactional
public UserRegistrationResponse doUserRegistration(UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = new UserRegistrationResponse();
try{
logger.info("Entering into try block");
Optional<UserInformationRepo> userInformationRepo=userRepository.findById(userRegistrationModel.getEmail());
logger.info("Get value is "+userInformationRepo.get().getEmail());
logger.info("Username is "+userInformationRepo.get().getFirstName()+" "+userInformationRepo.get().getLastName());
if(userInformationRepo.isPresent()){
userRegistrationResponse.setStatus(false);
userRegistrationResponse.setMessage("This email id { "+userRegistrationModel.getEmail()+" } is taken by another user already");
}
else{
UserInformationRepo userInformationRepoSave = new UserInformationRepo();
userInformationRepoSave.setEmail(userRegistrationModel.getEmail());
userInformationRepoSave.setFirstName(userRegistrationModel.getFirstName());
userInformationRepoSave.setEmail(userRegistrationModel.getLastName());
userInformationRepoSave.setEmail(userRegistrationModel.getPassword());
userRepository.save(userInformationRepoSave);
userRegistrationResponse.setStatus(true);
userRegistrationResponse.setMessage("New user account created with your " + userRegistrationModel.getEmail() + " emailId");
}
}
catch (Exception e){
logger.error(e.getMessage()+"*****"+e);
System.out.println("Exception occurred");
}
return userRegistrationResponse;
}
}
@Entity
@Table(name = "USER_INFORMATION")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserInformationRepo {
@Id
@Column(name = "EMAIL")
private String email;
@Column(name="FIRSTNAME")
private String firstName;
@Column(name="LASTNAME")
private String lastName;
@Column(name="PASSWORD")
private String password;
}
@Repository
public interface UserRepository extends JpaRepository<UserInformationRepo, String> {
}
@存储库
公共接口用户存储库扩展了JpaRepository{
}
这是我在尝试从POSTMAN工具访问注册API时遇到的异常
com.ajithan.tiptop.tiptopapplication.domain.UserInformationRepo
是正确的吗
UserInformationRepo
具有相应的构造函数:
请出示您的表
USER\u信息
定义。顺便问一下,为什么不使用标准findById
方法检查是否存在?现在通过您的JPA查询方式解决了异常。但现在,当我尝试使用未注册的电子邮件id访问API时,它抛出空指针异常。我尝试了您提出的方法,但现在我在尝试使用未注册的电子邮件id进行检查时遇到了此异常(java.util.NoSuchElementException:无值存在)。请编辑您的问题并添加完整的stacktrace。