gpt4 book ai didi

spring-data-jpa - JPA、Hibernate 验证器 - 电子邮件验证器不适用于 String

转载 作者:行者123 更新时间:2023-12-01 10:26:20 25 4
gpt4 key购买 nike

我想弄清楚如何在我的 Controller 中验证 DTO

堆:
Spring boot 1.5.4、Spring Data JPA、Hibernate Validation 5、PostgreSQL

问题是我仍然收到有关缺少验证器的异常。

有什么线索吗?

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Email' validating type 'java.lang.String'. Check configuration for 'email'
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:227) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorNoUnwrapping(ConstraintTree.java:308) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorInstanceForAutomaticUnwrapping(ConstraintTree.java:242) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:163) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:116) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:87) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:73) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]
at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:616) ~[hibernate-validator-5.4.1.Final.jar:5.4.1.Final]

DTO
public class CreateUserDto {

@NotEmpty
private String name;

@Email
@NotEmpty
private String email;

private String password;

private String address;

private String phone;

@NotNull
private Role role;
}

Controller
@PostMapping(value = "/users", consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public UserDto register(@Valid @RequestBody CreateUserDto user) {
return userService.register(user);
}

最佳答案

我怀疑您正在使用 Bean Validation 2.0 和 Hibernate Validator 5.4,它只支持 BV 1.1。 @Email 约束在 2.0 中被添加到规范中 - 在此之前,它只是一个 HV 特定约束。

您可能添加了对validation-api 2.0 的依赖。

所以:

  • 要么你回到 BV 1.1,你将需要使用 Hibernate Validator 特定的 @Email 约束(来自包 org.hibernate.validator.constraints);
  • 或者您将 HV 升级到 6.0(推荐)并保留 BV 2.0 和 javax.validation @Email 约束。
  • 关于spring-data-jpa - JPA、Hibernate 验证器 - 电子邮件验证器不适用于 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311248/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com