У меня есть веб-приложение, в котором есть много таблиц (каждая представляет POJO). Я написал файлы сопоставления для каждого класса, а затем использовал SchemaExport
Hibernate для генерации таблиц в моей базе данных. Теперь я хочу создать 2 дополнительные таблицы для каждой существующей таблицы, которая была создана:
- Таблица разрешений пользователей - хранит разрешения пользователей для POJO, специфичные для каждого поля
каждый столбец представляет поле в POJO, каждая строка представляет пользователя, каждая ячейка будет иметь значение «чтение», «запись» и т. д., представляющее разрешение пользователя на поле
- Таблица истории данных - хранит всю историю данных с номером версии
в этой таблице будут все столбцы таблицы POJO и 4 дополнительных поля: версия объекта данных, GUID транзакции (первичный ключ), метка данных и пользователь, выполнивший эту транзакцию.
Я бы хотел иметь возможность доступа к этим таблицам через Hibernate после их создания. Так что я могу легко добавлять / удалять / обновлять записи в них.
Мой вопрос
Большинство столбцов в дополнительных таблицах будут такими же, как таблица POJO. Поэтому я думаю, что лучше как-то ссылаться на таблицу POJO, а не создавать новые таблицы. Таким образом, если в таблицу POJO добавлено новое поле, эти таблицы будут иметь изменения автоматически. Но я не знаю, как это сделать. Я подумал, может быть, есть какой-то способ:
- создавать файлы отображения hibernate, которые как-то ссылаются на таблицу POJO
например в моем новом файле POJOPermission.hbm.xml как-то для указания, используйте те же поля, что и в таблице POJO, и добавьте эти новые поля.
- написать код Java для создания таблиц в Hibernate
например Я могу использовать java.lang.Class, чтобы вернуть мне список всех полей в POJO, а затем перебрать их, каким-то образом установить их как заголовки столбцов моей новой таблицы и каким-то образом вызовите Hibernate для создания этих таблиц во время выполнения
Может кто-нибудь сказать мне , как сделать что-либо из вышеперечисленного, или обойти эту проблему? У меня есть ощущение, что я могу думать об этом неправильно ...
Спасибо !!!
[Правка - решение]
Я закончил тем, что использовал XSLT для перевода оригинальных файлов hbm.xml в новые, изменения типов полей и т. Д. И указал файл hibernate.cfg.xml, чтобы включить вновь созданные файлы. В конце просто запустите schemaexport, чтобы сгенерировать все java-файлы вместе ...