Hibernate - производные классы Java для таблиц - PullRequest
3 голосов
/ 25 ноября 2010

Я генерировал файлы сопоставления и POJO в Netbeans вместо того, чтобы писать их самМожно ли использовать производный класс вместо унаследованного класса?Примером может быть что-то вроде этого:

Person.hbm.xml - mapping file

Person.java - generated class (strategy class per table)

PersonExtended - class that extends Person.java

Поэтому, когда я создаю новый объект:

PersonExtended personextended = new PersonExtended(<parameters>);

Могу ли я вызывать методы, такие как:

session.save(personextended) or session.delete(personextended)

?

Является ли этот сценарий разумным или я должен добавить любой код, который мне нужен, в сгенерированный класс?Заранее спасибо за помощь или предложения.

------- Редактировать --------

В моей базе данных нет типичной структуры, которую можно было бы отобразить как наследство.Я просто хочу отделить дополнительные методы от основного класса Java для сущности.

С наилучшими пожеланиями, sass.

1 Ответ

2 голосов
/ 26 ноября 2010

вы должны будете указать hibernate, как ваши расширенные классы должны отображаться через файл hbm.xml.В зависимости от стратегии, которую Hibernate должен использовать для полиморфизма, вам может потребоваться назначить значение дескриптора.Существуют 3 разные стратегии при использовании подклассов, известных как «таблица на класс», «таблица на конкретный класс» и «таблица на подкласс».

Вы можете определить подклассы в файле hbm-xml, используя <subclass> или <joined-subclass> элементы

, если вы правильно определили свой файл hbm.xml, вы можете использовать session.save(new PersonExtended())

Вы можете прочитать об этом здесь: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html

Надеюсь, что помог ..

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