java.util.NoSuchElementException:尝试检查emailID是否已在POSTGRES数据库中注册时,未引发值显示异常

java.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

我是Spring boot新手,我尝试使用未注册的emailID检查Postgres数据库中是否存在给定的电子邮件id。但不幸的是,我得到了这一点。我在这里附上了一个例外屏幕截图供您参考。你们能帮我解决这个问题吗

TipTopController.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> {
}
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
    具有相应的构造函数:

  • 您不应该对此使用本机查询。您可以通过以下方式使用JPA查询:
  • 为什么你不能只使用标准方法

  • 请出示您的表
    USER\u信息
    定义。顺便问一下,为什么不使用标准
    findById
    方法检查是否存在?现在通过您的JPA查询方式解决了异常。但现在,当我尝试使用未注册的电子邮件id访问API时,它抛出空指针异常。我尝试了您提出的方法,但现在我在尝试使用未注册的电子邮件id进行检查时遇到了此异常(java.util.NoSuchElementException:无值存在)。请编辑您的问题并添加完整的stacktrace。