Как исправить ограничения проверки во встроенном объекте, игнорируясь? - PullRequest
0 голосов
/ 09 января 2019

У меня есть объект-объект в REST API Spring Boot & Hibernate. Этот класс имеет много полей. Часть из них встроена, и ограничения проверки, такие как @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, и я могу создавать свои сценарии базы данных вручную, но я бы хотел избежать этого и получить почти идеальный сценарий благодаря hibernate

1 Ответ

0 голосов
/ 09 января 2019

Вам необходимо добавить аннотацию @Valid к встроенному объекту, если вы хотите проверить ограничения, определенные в вашем @Embeddable объекте:

@Entity
public class Notice extends BaseEntity {

    @Embedded
    @Valid
    private MyEmbeddedClass myEmbeddedClass;

    ...
}
...