При наследовании сущностей, для каждого создается таблица. Хотя по дефолту @Inheritance(strategy = InheritanceType.SINGLE_TABLE).
версия студии 1.5.1. jmix - 1.3.5 и 1.5.1.
Создал читстый проект 3 сущности
Абстрактную сущность
Первую сущность, которая наследуется от абстрактной
Вторую сущность, которая наследуется от абстрактной
И вот что генерируется
3 таблицы вместо одной, причем остальные две через “кэмэл кейз” именуются.
через какое-то время генерирует опять нормально, как и положено
Кажется, это связано как то с дизайнером студии. Иногда, когда перейти в дизайнер, он создает аннотацию @Table(name = “FirstEntity”) сам. И даже, когда эту аннотацию удалить, то ликьюбейз генерирует так, как будто она там есть
Могу предоставить проект. Но проблема не в проекте. Долго тестил, чтобы воспроизвести ошибку. С чистого проекта она не появится, а появится только после манипуляций с аннотациями и при переходах на вкладку “дизайнер”. Протестил на комьюнити и ультимейт версиях, на винде и убунту. Заметил, что такое поведение начинается, если добавить индекс в старшую сущность, даже если потом этот индекс удалить. https://github.com/FedorBaggins/jmixinheritanceliquibasetest
Здравствуйте
В вашем случае проблема в некорректных JPA аннотациях на абстрактной сущности. Если вы хотите иметь абстрактную сущность у которой задана таблица и к которой можно обращаться в JPQL запросе, то необходимо убрать аннотацию @MappedSuperclass. @MappedSuperclass сущность по определению таблицу не имеет, к ней нельзя обратиться в запросе, она лишь определяет атрибуты общие для своих наследников.
@MappedSuperclass отрабатывает как надо. Вопрос в генерации ликьюбейзом 3х таблиц вместо одной. Проблема возникает после добавления индекса. И даже после удаления индекса продолжает генерироваться 3 таблицы вместо одной.
Постарался продемонстрировать.
Студия ведёт себя подобным образом, так как у вас стоит аннотация @MappedSuperclass. Она недопустима в данном случае.
Вам необходимо её убрать, тогда всё будет работать как нужно.
Не понимаю о чём речь, если честно
ID будет наследоваться от AbstractEntity. В вашем примере выше (jmixinheritanceliquibasetest) просто уберите аннотацию @MappedSuperclass у AbstractEntity и всё работает нормально и в Студии и в рантайме.