Spring Boot Hibernate 约束验证器
Posted
技术标签:
【中文标题】Spring Boot Hibernate 约束验证器【英文标题】:Spring Boot Hibernate Constraint Validator 【发布时间】:2017-04-14 17:07:48 【问题描述】:我想通过使用 Spring Boot 和 Hibernate Validator 进行字段验证而不持久化数据。
public class RoomDto
private long id;
@Expose
private int beds;
@Expose
private double size;
@Expose
@NotNull
private String flatBasicStringDto;
我正在使用 GSON 从 JSON 解析 DTO:
RoomDto guestRoom = this.jsonParser.read(RoomDto.class, "/files/input/room.json");
当 JSON 文件中缺少 flatBasicStringDto 时,我想得到一个错误。
我已经尝试了很多配置,但到目前为止没有任何效果。
spring.jpa.properties.javax.persistence.validation.group.pre-persist=javax.validation.groups.Default
任何想法如何处理这个问题?
【问题讨论】:
【参考方案1】:您可以使用@valid 注解来使用方法级别的验证。但是,您需要 DI 容器与验证框架挂钩。使用 Spring 的综合示例位于 http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/。
如果您不想使用 DI 容器,可以使用类似这样的方法来获取验证错误:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<RoomDto>> errors = validator.validate(guestRoom);
【讨论】:
出色的答案!这两个建议都很好。看来我一直在使用错误的方法。谢谢!以上是关于Spring Boot Hibernate 约束验证器的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot org.hibernate.exception.ConstraintViolationException
Spring Data JPA和Hibernate:数据库约束的异常处理