весенний загрузочный репозиторий не возвращает реальную сущность - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть объекты с наследованием, которые похожи на те, что описаны в статье здесь: http://blog.netgloo.com/2014/12/18/handling-entities-inheritance-with-spring-data-jpa/

Мой абстрактный базовый класс - это повышение, а подкласс - AssortmentPromotion.

В моей функции сопоставления я вызываю следующий код:

Promotion promotion = promotionRepository
                                .findById(source.getPromotion().getId())
                                .orElseThrow(() -> new BadRequestException("Invalid Promotion"));

Теперь переменная продвижения не является допустимым AssortmentPromotion, как вы можете видеть на изображении ниже.Также promotion instanceof AssortmentPromotion возвращает false.

Not A real promotion

Есть идеи, что я мог бы сделать, чтобы получить реальный разрешенный объект?

1 Ответ

0 голосов
/ 27 сентября 2018

Hibernate использует javassist для улучшения и прокси классов сущностей.В основном это делается для «ленивой» загрузки «магии» связанных сущностей (@ManyToOne, @OneToOne).

Там есть множество статей о том, как это сделать и как можно прокси проксировать такую ​​сущность: https://vladmihalcea.com/how-does-a-jpa-proxy-work-and-how-to-unproxy-it-with-hibernate/

org.hibernate.Hibernate.unproxy(promotion);

http://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/Hibernate.html#unproxy-java.lang.Object-

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