Как добавить ограничение на элементы коллекции - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть объект с коллекцией строк. Я хотел бы добавить ограничения, которые будут проверять, все ли элементы коллекции имеют размер меньше 255.

Допустим, у меня есть сущность Area с коллекцией references. Я хотел бы быть уверен, что все ссылки короче, чем 255 символов. Ты знаешь, как мне этого добиться.

@Entity
@Table(name = "AREA")
public class Area  Serializable {

    private static final long serialVersionUID = -4756123949793458708L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", unique = true, nullable = false)
    private Integer id;

    @ElementCollection
    @CollectionTable(name = "AREA_REFERENCES", joinColumns = @JoinColumn(name = "AREA_ID"))
    @Column(name = "REFERENCE", nullable = false)
    @Size(max = 255) // THIS ANNOTATION SEEMS TO NOT WORK
    private Set<String> references = new HashSet<>();

    ....

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Для проверки вы можете добавить ограничение @Size(max=allowed_length) из API проверки бинов (JSR 303).

Hibernate использует ограничения Bean Validation для создания точной схемы базы данных. например:

@Size.max приводит к определению varchar(max) для Strings и @Min, @Max привести к проверке столбца (например, значение <= max) </p>

0 голосов
/ 04 сентября 2018

Аннотировать, как это

@Size(max = 255)
private Set<String> references;

означает, что Set<String> может содержать максимум 255 строк. Конечно, это не то, что вы хотите.

Вместо этого вы хотите, чтобы каждая строка имела максимум 255 символов: Вы можете добиться этого, аннотируя параметр типа в < > следующим образом:

private Set<@Size(max = 255) String> references;

Для этого вам понадобятся совершенно новые версии Hibernate Validator (6.0.x). и проверка бобов (2.0.1).

См. Также этот ответ для аналогичной проблемы.

0 голосов
/ 04 сентября 2018

Согласно как ограничить длину столбца при использовании коллекции примитивов можно установить ограничение размера для аннотации столбца.

...