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.

Ссылка:

Другие вопросы по тегам