JPA универсальное поле - PullRequest
3 голосов
/ 11 января 2011

Можно ли сохранить общее поле?

У меня есть это свойство в Entity классе

...
private T payload;
...

T extends EventMessagePayload

и

public interface StringPayload extends EventMessagePayload{ 
    String getPayload();
}

В моем приложении я сохраняю поле только тогда, когда он имеет строковый тип, и во время операции сохранения все прекрасно работает.

Когда я вместо этого читаю объект, JPA пытается создать объект String, но вместо этого это StringPaylod. Есть ли способ перехватить создание и обработать маршаллинг объекта?

Ответы [ 2 ]

3 голосов
/ 16 января 2011

Сам по себе JPA не позволяет этого, но ваша реализация JPA может это позволить. Однажды мы сделали это с Hibernate, и он сводится к реализации вашего собственного EntityTuplizer (и HibernateInterceptor для отображения ваших объектов обратно в HibernateEntities).

0 голосов
/ 14 декабря 2015

Мы можем.если T реализует Serializable

@Entity
public class IgsSubject extends BasicObject implements Serializable{

    private static final long serialVersionUID = -5387429446192609471L;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...