Предположим, что существуют два объекта JPA, использующие наследование объединенной таблицы Hibernate с различающим столбцом:
Суперкласс: Форма
Подкласс: Цикл
Запуск JPQL select s from Shape s where s.id=?1
this возвращается ошибка:
Error: org.hibernate.WrongClassException: Object [id=61] was not of the specified subclass [model.Shape] : Discriminator: Cycle
Это происходит из-за того, что hibernate также с нетерпением пытается извлечь информацию о цикле, но по какой-то архитектурной причине класс Cycle отсутствует в пути к классам.
Вопрос: Есть ли способ отключить запрос вторичного соединения, который Hibernate выполняется автоматически, чтобы присоединиться к столбцам подкласса? Скажем что-то вроде этого:
@Entity
@Inheritance(strategy = InheritanceType.JOINED) //Q: something here like 'fetch = FetchType.LAZY'
@DiscriminatorColumn(name = "DTYPE", discriminatorType = DiscriminatorType.STRING)
public class Shape {}
Я решил это с помощью проекции (верните нужные мне столбцы), но я вынужден выполнить дополнительные запросы для объединенных столбцов, невозможно присоединиться к выборке таблицы для улучшения производительности.