Генерация ликьбейза при наследовании сущностей

При наследовании сущностей, для каждого создается таблица. Хотя по дефолту @Inheritance(strategy = InheritanceType.SINGLE_TABLE).
версия студии 1.5.1. jmix - 1.3.5 и 1.5.1.
Создал читстый проект 3 сущности

  • Абстрактную сущность
  • Первую сущность, которая наследуется от абстрактной
  • Вторую сущность, которая наследуется от абстрактной
    image

И вот что генерируется
image

3 таблицы вместо одной, причем остальные две через “кэмэл кейз” именуются.

через какое-то время генерирует опять нормально, как и положено
image

Кажется, это связано как то с дизайнером студии. Иногда, когда перейти в дизайнер, он создает аннотацию @Table(name = “FirstEntity”) сам. И даже, когда эту аннотацию удалить, то ликьюбейз генерирует так, как будто она там есть

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

Спасибо за обращение.
Приложите пожалуйста тестовый проект на котором воспроизводится проблема. Чтобы мы могли понять в чём причина.

Могу предоставить проект. Но проблема не в проекте. Долго тестил, чтобы воспроизвести ошибку. С чистого проекта она не появится, а появится только после манипуляций с аннотациями и при переходах на вкладку “дизайнер”. Протестил на комьюнити и ультимейт версиях, на винде и убунту. Заметил, что такое поведение начинается, если добавить индекс в старшую сущность, даже если потом этот индекс удалить.
https://github.com/FedorBaggins/jmixinheritanceliquibasetest

Здравствуйте
В вашем случае проблема в некорректных JPA аннотациях на абстрактной сущности. Если вы хотите иметь абстрактную сущность у которой задана таблица и к которой можно обращаться в JPQL запросе, то необходимо убрать аннотацию @MappedSuperclass.
@MappedSuperclass сущность по определению таблицу не имеет, к ней нельзя обратиться в запросе, она лишь определяет атрибуты общие для своих наследников.

@MappedSuperclass отрабатывает как надо. Вопрос в генерации ликьюбейзом 3х таблиц вместо одной. Проблема возникает после добавления индекса. И даже после удаления индекса продолжает генерироваться 3 таблицы вместо одной.
Постарался продемонстрировать.

Студия ведёт себя подобным образом, так как у вас стоит аннотация @MappedSuperclass. Она недопустима в данном случае.
Вам необходимо её убрать, тогда всё будет работать как нужно.

если её убрать, то у наследуемых сущностей не будет поля Id, и остальных полей. Без Id будет ошибка
image
т.е. уже не работает как нужно.

Не понимаю о чём речь, если честно
ID будет наследоваться от AbstractEntity. В вашем примере выше (jmixinheritanceliquibasetest) просто уберите аннотацию @MappedSuperclass у AbstractEntity и всё работает нормально и в Студии и в рантайме.