Коллекция сущностей

Аннотации @NotNull, @Size не отрабатывают на коллекции. Сохраняю сущность в которой в списке пустота и ui не выдает ни какой ошибки, как было в ранних версиях jmix.

Здравствуйте

Не смог воспроизвести описанную проблему.

Не могли бы вы предоставить небольшой тестовый проект, на котором эта проблема воспроизводится?

С уважением,
Дмитрий

Коллекция должна быть вложенной с типом композиция.

Он имеет в виду ситуацию когда поле является коллекцией композитных сущностей. Мы навешиваем валидатор в композитной сущности на какое-то поле, но он не отрабатывает так как фактически когда мы жмем сохранить (кнопка ок), она не сохраняется через энтити менеджер в базу (транзакции не происходит) и вызов валидатора (бин валидация) не происходит.

Есть основная сущность → в ней есть композитная (открываем редактирование через entityComposition (значек лупы в текстовом поле)), в ней есть валидатор на поле → коллекции композитных сущностей

вот этот валидатор и не отрабатывает, более того уверен что ни один валидатор (именно бин валидатор) не отрабатывает, так как для композитной сущности при нажатии сохранить (кнопка ок) не происходит транзакции

поднимаю тему, ответ хотелось бы получить

Здравствуйте.

Попытался воспроизвести проблему снова - все отработало корректно.

Создал три сущности:

  • SuperParent - является основной сущностью
  • Parent - является вложенной композитной сущностью для SuperParent
  • Child - коллекция композитных сущностей в Parent

Навесил валидаторы:

    @Size(min = 1, max = 3)
    @NotNull

При попытке сохранить основную сущность SuperParent, т.е. на момент коммита, показывается уведомление:
image

Тестировал на проекте 2.1
Скорее всего, описанная Вами проблема была решена в этом тикете: entity_openComposition action opens an entity editor without current modifications · Issue #2229 · jmix-framework/jmix · GitHub

Если вкратце - теперь в открываемые через диалог экраны редактирования пробрасывается родительский контекст.

С уважением,
Дмитрий

Здравствуйте, а при чем тут сохранение родительской? Естественно там будет проверка, важно проверить на открытом экране дочерней сущности при нажатии ОК, вот этого и не происходит! Потом когда мы уже закрыли дочернюю сущность непонятно что за ошибка выходит так как окно уже закрыто. А вложенность может быть очень большой.

1 симпатия

Понял, что Вы имеете в виду.
В ClassicUI мы реализовывали такую валидацию отдельно: Check and fix usage of bean validation annotations on collection attributes · Issue #1186 · jmix-framework/jmix · GitHub

Завёл тикет, чтобы перенести функционал: [Port] Fix usage of bean validation annotations on collection attributes · Issue #2364 · jmix-framework/jmix · GitHub

Спасибо, что сообщили о проблеме.

С уважением,
Дмитрий

2 симпатии

Только неплохо было бы расширить валидацию дочек полностью, а не только нул и сайз. Кастомные валидаторы на саму сущность в том числе, а то обрубок выйдет.

1 симпатия