Мне было интересно, я что-то упускаю из виду или валидатор гибернации не предлагает аннотации для проверки равенства двух полей (например, пароля). Я знаю, что могу написать свои собственные валидаторы, но это похоже на стандартную функциональность.
спящий валидатор: проверить совпадение 2 полей
Ответы (4)
Если вы используете Spring Framework, вы можете использовать для этого Spring Expression Language (SpEL). Я написал небольшую библиотеку, которая предоставляет валидатор JSR-303 на основе SpEL, который очень упрощает межполевые проверки. Взгляните на https://github.com/jirutka/validator-spring.
Это проверит равенство полей пароля, если хотя бы одно из них не пусто.
@SpELAssert(value = "password.equals(passwordVerify)",
applyIf = "password || passwordVerify",
message = "{validator.passwords_not_same}")
public class User {
private String password;
private String passwordVerify;
}
Просто пошел по пользовательскому маршруту валидатора. Два других ответа здесь на самом деле не связаны с вопросом. Немного погуглив, я нашел пример fieldmatch.
Hibernate — это ORM Mapper.
Он используется для сохранения данных в БД и их повторного извлечения. Таким образом, наличие 2 полей с одинаковым значением не имеет особого смысла (с точки зрения сохранения). Это то, что вы должны проверить в своей бизнес-логике.
И я с Джунешем... Не сохраняйте свои пароли в восстанавливаемом формате... Поищите Hasing and Salting - Или, что еще лучше, подумайте об openID, чтобы вам не пришлось беспокоить своих клиентов очередным дурацким паролем...
Я надеюсь, что вы также не сохраняете пароль подтверждения в базе данных. У вас нет готовых проверок для этого, но вместо этого вам придется использовать пользовательскую аннотацию, которая также довольно проста.