Как сохранить объект, который наследуется от другого - PullRequest
0 голосов
/ 21 февраля 2012

У меня вопрос по Hibernate.Я использую версию 3.1.3, и у меня есть два класса, один наследует другой.Это мой сценарий:

//User class, which is stored in the database and hibernate mapped
public class User

//Logged user class, this is a bean which inherits from user and 
//stores only user information and some session data
public class LoggedUser extends User

Где-то в моем коде я получаю компонент LoggedUser из моего сеанса и назначаю его переменной User.

User user = Session.getBean("LoggedUser");

Это можно сделать без приведения, но когда я пытаюсь сохранить объект "пользователь" в моей базе данных, у меня появляется ошибка "неизвестный объект", потому что hibernate не распознает расширение LoggedUserПользовательский класс.

Существует множество руководств по реализации наследования в Hibernate, но я не заинтересован в сохранении дополнительных свойств LoggedUser, я только хочу сохранить ту информацию, которая находится в таблице User.Есть идеи?

1 Ответ

0 голосов
/ 21 февраля 2012

Я не уверен насчет чистого решения, но вот несколько советов, которые могут привести вас к некоторым.

  1. Пометьте LoggedUser как сущность, сопоставьте с той же таблицей пользователей (если это возможно) и отметьте поля, которые вы не хотите сохранять (все поля LoggedUser), с помощью @Transient.
  2. Добавьте поля @Transient в User из LoggedUser и избавьтесь от LoggedUser.
  3. Создайте конструктор в классе User, который принимает LoggedUser и инициализирует пользователя с необходимыми свойствами.
  4. Пометьте LoggedUser как LoggedUserDTO и создайте сущность> dto mapper.

Надеюсь, это приведет вас к яркой стороне.

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