java - 如何修复被忽略的嵌入式对象中的验证约束?
问题描述
我在 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,我可以手动创建我的数据库脚本,但我想避免这种情况,并通过休眠获得几乎完美的脚本
解决方案
@Valid
如果要验证对象中定义的约束,则需要在嵌入对象上添加注释@Embeddable
:
@Entity
public class Notice extends BaseEntity {
@Embedded
@Valid
private MyEmbeddedClass myEmbeddedClass;
...
}
推荐阅读
- r - R网格排列tiff显微镜RGB
- oracle - 在 SQL 开发人员中创建新连接时出现问题
- javascript - 数据是函数的空值(Vuejs)
- function - 我的 addEventListener 点击功能不起作用
- python-3.x - 无法创建 cudnn 句柄:CUDNN_STATUS_ALLOC_FAILED
- angular - 从表单数组中获取角度
- python - 熊猫索引错误运行应用功能
- firebase - 有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?
- github-actions - Github Actions 有模板吗
- ecmascript-6 - JSDoc 在带有 Rollup 的 .MJS 文件中不起作用