Какова лучшая практика для рефакторинга от одного класса к наследованию в JPA2? - PullRequest
0 голосов
/ 31 октября 2019

Я рефакторинг, чтобы использовать стратегию наследования SINGLE_TABLE в JPA2. У меня был общий класс User, но теперь у меня есть абстрактный класс User и три реализации класса User (Candidate, HiringManager и Admin).

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно добавитьСтолбец дискриминатора типа NULL со значением по умолчанию (он должен иметь значение по умолчанию, поскольку в таблице уже есть записи, и вы не можете добавить ненулевой столбец в таблицу, в которой уже есть записи без указания значения по умолчанию). Это значение по умолчанию будет обязательно неправильным, когда я его добавлю (в настоящий момент все таблицы являются просто «пользователями», но на самом деле они представляют собой смесь трех, поэтому при выборе любого значения по умолчанию некоторые из них будут классифицироваться неправильно).

Лучше всего просто добавить неверное значение дискриминатора по умолчанию, а затем запустить SQL сразу после того, что может пройти и обновить столбец дискриминатора, чтобы он был корректным на основе некоторых других данных в базе данных? Мол, только кандидаты имеют электронные письма, поэтому каждая строка с электронным письмом должна быть кандидатом и т. Д. И т. Д.

Я использую Liquibase для управления переходами базы данных, но это не так важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...