Java EE, приведение Entity к Extended!
Доброе утро. У меня есть два энтита, Пользователь и Пользователь1 (который расширяет Пользователь с @Inheritance(strategy=InheritanceType.JOINED)
добавление некоторой дополнительной информации, такой как электронная почта, номер телефона и т. д. (атрибуты, не требующиеся для объекта "Пользователь").
Сейчас... User user
уже сохраняется. В будущем я хотел бы иметь возможность приводить этого пользователя, предоставляя дополнительные данные, примерно так:
User1 user1 = (User1)user;
user1.setEmail("email@email.com");
Я пробовал это решение, но, конечно... оно не работает! Возврат Исключения.
Любая идея? Любая помощь? Благодарю.
1 ответ
Приведение в Java не работает таким образом. Вы можете приводить только к тем объектам, с которых вы действительно вышли.
Что вы можете сделать, это предоставить конструктор копирования в вашей расширенной сущности:
public ExtendedUser(BasicUser user){
this.setFoo(user.getFoo());
this.setBar(user.getBar());
}
Но нет способа превратить что-то во что-то, что не расширяется. Это называется безопасность типов и является одним из наиболее важных аспектов Java.
Ссылка:
- Спецификация языка Java: 5.1.6 Сужение ссылочных преобразований