Здравствуйте,
Постараюсь прояснить проблему и наше решение ограничить функциональность Studio.
Изначально, в Studio была недоработка, позволяющая в классах-наследниках SINGLE_TABLE использовать атрибуты с одинаковыми именами. Возможность использовать полностью одинаковые атрибуты в наследниках кажется удобной - меньше колонок в таблицах, проще модель и есть ощущение, что это полезная оптимизация.
На практике, совпадение имён параметров не значит, что будут совпадать их типы и что эти атрибуты не изменят в будущем. Отслеживать, что все одинаково названные атрибуты не были изменены и имеют одинаковые типы, и генерировать скрипты с оглядкой на это - отдельная сложная задача. Но даже решив её, нельзя защититься от неправильного использования такой модели - например, даже при совпадении имён и типов атрибутов, для них может требоваться разная длина, индексы, триггеры и другие детали СУБД. Поэтому, нами было принято решение - не позволять разработчикам создавать атрибуты с одинаковыми именами в сущностях, которые располагаются в одной таблице.
Какой может быть миграция, если вы всё-таки воспользовались этой недоработкой:
- Создайте скрипт обновления (вручную), который создаст дополнительные копии колонки с другим именем и скопирует данные.
- Измените имена атрибутов и связанных колонок в коде сущностей.
- Выполните обновление БД - Studio сможет продолжить работать с вашей моделью.
- Если какие-то колонки используются во всех наследниках (или почти во всех), то разместите их в основной сущности-предке.
При необходимости единообразно работать с наследниками из Java кода, вы можете использовать Java интерфейсы (как вы упоминали) и реализовывать их в нужных наследниках.
Надеюсь, что такая миграция не потребует от вас коренных изменений вашей системы.