如何解决忽略嵌入对象蜂的验证约束?

时间:2019-01-09 08:10:15

标签: java hibernate jpa bean-validation

我在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;

}

@%字段上的最大限制被忽略,但是@size运行正常

@Entity
public class MyEntityClass extends BaseEntity {

  @Size(max = 50)
  private String name;

  @Max(6000)
  private Integer size;

}

在此处创建了对字段大小的@Max约束和@size约束

是否可以解决此问题?我的Spring引导版本是2.1.1,我可以手动创建数据库脚本,但是我想避免这种情况,并且由于休眠而获得了几乎完美的脚本

1 个答案:

答案 0 :(得分:1)

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

@Entity
public class Notice extends BaseEntity {

    @Embedded
    @Valid
    private MyEmbeddedClass myEmbeddedClass;

    ...
}