Как вставить уникальный адрес электронной почты в базу данных - PullRequest
0 голосов
/ 11 октября 2018

Я хочу вставить уникальный адрес электронной почты и хочу отобразить сообщение в форме, например: адрес электронной почты уже существует .Когда я сохраняю новую запись, она должна возвращать ответ, который говорит, что он уже присутствует в таблице.

Класс модели

@PostMapping("/user")
public ModelAndView processRegistrationForm(@ModelAttribute("user") @Valid Users user, BindingResult result) {
    if (result.hasErrors()) {
        return new ModelAndView(landingPage);
    } else {
        try {
            userService.saveUser(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ModelAndView("redirect:/user");
    }
}

Страница JSP

<form:form action="${registerUrl}" modelAttribute="user" method="post">
    <div class="form-group">
        ...
        <c:if test="${user.userId eq null}">
            <input class="btn btn-success" type="submit" value="Register">
        </c:if>
    </div>
</form:form>

Класс сущности

public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_generator")
    @SequenceGenerator(name="users_generator", sequenceName = "SEQ_USERS", allocationSize=1)


    @Column(name="USER_ID")
    private Integer userId;

    @Column(name="LOGIN_NAME")
    private String loginName;

    @NotEmpty
    @Email
    @Column(name="MAIL_ID", unique=true)
    private String mailId;

    @NotEmpty
    @Column(name="FIRST_NAME")
    private String firstName;
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Если вы используете Hibernate или JPA, вы можете использовать, как показано ниже.unique = true убедитесь, что значение столбца электронной почты будет уникальным.

@Column(name = "email", unique=true)
private String email;

В противном случае вам необходимо добавить метод, чтобы проверить это

if(userService.findUserByEmail() != null) {
 // User already exists
}
0 голосов
/ 11 октября 2018

Добавить ограничение уникального ключа для вашего столбца в базе данных.Если вы используете hibernate, он выдаст исключение ConstraintViolation , когда вы попытаетесь вставить дубликат электронной почты, а при обновлении он выдаст DataIntegerityViolationException .

Просто перехватите эти исключения и верните вашсообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...