gpt4 book ai didi

java - 如何修复被忽略的嵌入对象中的验证约束?

转载 作者:行者123 更新时间:2023-12-02 06:00:11 24 4
gpt4 key购买 nike

我在 Spring Boot 和 Hibernate REST API 中有我的实体对象。这个类有很多领域。其中一部分是嵌入的,并且 @Min @Max 等验证约束不适用于 @Embeddable 类中的字段。相同的验证规则在 @Entity 类中完美运行。我正在使用 javax.validation.constraints.Max

我的主要对象如下所示:

@Entity
public class Notice extends BaseEntity {

@Embedded
private MyEmbeddedClass myEmbeddedClass;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "entity_class_id")
private MyEntityClass myEntityClass;

}

还有我的@embedded类:

@Embeddable
public class MyEmbeddedClass {

@Size(max = 50)
private String label;

@Max(100)
private Integer percent;

}

@Max 对百分比字段的约束被忽略,但 @size 工作正常

@Entity
public class MyEntityClass extends BaseEntity {

@Size(max = 50)
private String name;

@Max(6000)
private Integer size;

}

这里正在创建对字段大小的 @Max 约束和 @size 约束

有办法解决这个问题吗?我的 Spring boot 版本是 2.1.1,我可以手动创建数据库脚本,但我想避免这种情况,并通过 hibernate 获得几乎完美的脚本

最佳答案

如果要验证 @Embeddable 对象中定义的约束,则需要在嵌入对象上添加 @Valid 注释:

@Entity
public class Notice extends BaseEntity {

@Embedded
@Valid
private MyEmbeddedClass myEmbeddedClass;

...
}

关于java - 如何修复被忽略的嵌入对象中的验证约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54105660/

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