Problemy z walidacją formularza

Odpowiedz Nowy wątek
2019-12-27 04:44

Rejestracja: 4 miesiące temu

Ostatnio: 2 miesiące temu

0

Próbuję stworzyć formularz w którym oprócz walidacji pustych pól pokazuje też komunikat o ponownym użyciu e-maila. Problem polega na tym że zwraca mi za dużo zapytań, nie wiem za bardzo jak to ustawić.
Błąd

query did not return a unique result: 4; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 4

Kod

    public  ModelAndView stworzpracownika (@Valid Pracownik pracownik , BindingResult bindingResult ){

        ModelAndView modelAndView = new ModelAndView();
        Pracownik pracownik1 = servicePracownik.findByEmail(pracownik.getEmail());

        if(pracownik1 != null) bindingResult.rejectValue("email" , "blad.pracownik", "Taki email juz istnieje");

        if(bindingResult.hasErrors()){
            modelAndView.setViewName("rejestracja");
        }
        else {
            modelAndView.addObject("sukces", "Udało się zarejestrować");
            modelAndView.addObject("user", new Pracownik());
            modelAndView.setViewName("rejestracja");
        }
        return modelAndView;
    }

Model

@Entity
public class Pracownik {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Integer idd;
    @Column
    @NotEmpty(message = "Imię nie może być puste")
    private String imie;
    @Column
    @NotEmpty(message = "Nazwisko nie może być puste")
    private String nazwisko;
    @Column
    @Transient
    @Length(min = 5, message = "Hasło musi mieć więcej niż 5 znaków")
    @NotEmpty(message = "Hasło nie może być puste")
    private String haslo;
    @Column
    @NotEmpty(message = "Email nie może być pusty")
    @Email(message = "Musisz podać email")
    private String email;

Pozostało 580 znaków

2019-12-27 09:26

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

Masz 4 pracowników z podanym mailem, dlatego metoda „findByEmail” chciałaby zwrócić 4 encje. Jeżeli mail ma być unikalny, to masz błędne dane w bazie - usuń nadmiarowe wiersze.


Ivory Tower Architect

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0