Java EE, приведение Entity к Extended! - PullRequest
0 голосов
/ 27 мая 2011

Goodmorning.У меня есть два энтита, Пользователь и Пользователь1 (который расширяет Пользователя @Inheritance(strategy=InheritanceType.JOINED), добавляя некоторую дополнительную информацию, такую ​​как электронная почта, номер телефона и т. Д. ... атрибуты, не требующиеся для сущности Пользователь).

Теперь ...User user уже сохраняется.В будущем я хотел бы иметь возможность приводить этого пользователя, предоставляя эти дополнительные данные, делая что-то вроде этого:

User1 user1 = (User1)user;
user1.setEmail("email@email.com");

Я пробовал это решение, но, конечно же ... оно не 'т работа!(Возвращено исключение на кастинг).

Есть идеи?Любая помощь?Благодаря.

1 Ответ

0 голосов
/ 27 мая 2011

Приведение в Java не работает таким образом. Вы можете применять только к тем объектам, с которых вы действительно вышли.

То, что вы могли бы сделать, это предоставить конструктор копирования в расширенной сущности:

public ExtendedUser(BasicUser user){
    this.setFoo(user.getFoo());
    this.setBar(user.getBar());
}

Но нет способа превратить что-то во что-то, что не расширяется. Это называется безопасность типов и является одним из наиболее важных аспектов Java.

Справка:

...