Проверка bean-компонентов не обнаруживает нарушений в Jakarta EE и HibernateJAVA

Программисты JAVA общаются здесь
Anonymous
Проверка bean-компонентов не обнаруживает нарушений в Jakarta EE и Hibernate

Сообщение Anonymous »

У меня возникли проблемы с проверкой компонентов в моем проекте Jakarta EE и Hibernate. Мой метод проверки не обнаруживает никаких нарушений, даже если объект содержит недопустимые значения. Вот соответствующий код:
Метод проверки:

Код: Выделить всё

private void validate(T entity, Class... groups) {
Set violations = EntityValidator.validateEntity(entity, groups);
if (!violations.isEmpty()) { // Always Empty!
for (ConstraintViolation violation : violations) {
throw new RuntimeException(violation.getPropertyPath() + ": " + violation.getMessage());
}
}
}
Класс EntityValidator:

Код: Выделить всё

public class EntityValidator {

private static final ValidatorFactory DEC_FACTORY = Validation.byDefaultProvider()
.configure()
.buildValidatorFactory();

public static  Set validateEntity(T entity, Class... groups) {
Set violations = DEC_FACTORY
.getValidator().validate(entity, groups);
return violations;
}
}
Класс сущности:

Код: Выделить всё

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;

@Column(name = "username", nullable = false, unique = true)
@Size(min = 5, max = 15, message = "{username.size}")
@Pattern(regexp = "^[a-zA-Z0-9._-]{5,15}$", message = "{username.pattern}")
private String username;

@Column(name = "password_hash")
@Pattern(regexp = "^(?=.*[0-9]).{8,}$", message = "{password.pattern}")
private String passwordHash;
}
Тестовый пример:

Код: Выделить всё

User user = new User();
user.setUsername("a");
user.setPasswordHash("abc");
validate(user);
Несмотря на установку недопустимых значений, метод validate не обнаруживает никаких нарушений. В моем проекте используются Jakarta Validation 2.0.2 и Hibernate 6.0.2. Как я могу гарантировать, что проверка компонента выявляет эти нарушения?


Подробнее здесь: https://stackoverflow.com/questions/788 ... -hibernate

Вернуться в «JAVA»