Сопоставить несколько таблиц с одинаковой схемой с одним и тем же POJO в спящем режиме - PullRequest
1 голос
/ 24 августа 2011

Я пишу программу, которая будет отображать различные переводы книги в зависимости от выбора.Итак, предположим, у меня есть 3 таблицы с одинаковыми столбцами в БД, скажем, на английском, французском и немецком языках.Затем у меня есть POJO, скажем Book.java.

Теперь, как я могу использовать этот же класс для запроса конкретной таблицы на основе выбора пользователя.Я изменяю значение @table (name = "...") динамически?это вообще возможно?Я уже некоторое время использую jdbc, но это будет мой первый проект hibernate.

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

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

Но это похоже на проблему нормализациимне.Если у вас есть три таблицы, в которых содержатся одинаковые столбцы, почему бы не использовать одну таблицу с дополнительным столбцом language?

1 голос
/ 24 августа 2011

Вы должны разработать класс Hierarchy: класс Book, являющийся самым верхним классом, подклассы BookFrench, BookGerman, BookEnglish. Тогда вам придется использовать одну из моделей наследования hibernate (для этого я предполагаю, что MappedSuperClass будет наиболее интересным). Тогда у вас будут разные классы, но все экземпляры будут записаны как Pojos, и каждый подкласс будет иметь свою собственную таблицу в БД.

С уважением, Stéphane

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