У меня есть пара классов (Foo и Moo), над которыми я работаю в спящем приложении. Оба класса расширяют Бар.
Foo --- extends ---> Bar
Moo --- extends ---> Bar
Foo и Moo и Bar идентичны во всех отношениях, за исключением того, что каждый из Foo и Moo реализует свой интерфейс маркеров.
Другими словами, Foo реализует IFoo и расширяет Bar. Му реализует IMoo и расширяет Бар. Однако ни интерфейс IFoo, ни интерфейс IMoo не привносят в картину никаких новых методов, поскольку они являются просто интерфейсами маркеров.
Кроме того, у меня есть пара классов репозитория JPA.
@Repository
public class FooRepository extends JpaRepository<Foo, Long> {
public Foo findFooById(id);
}
и
@Repository
public class MooRepository extends JpaRepository<Moo, Long> {
public Moo findMooById(id);
}
Проблема:
Когда я вызываю findMooById, я получаю ошибку:
org.database.util.DatabaseException: ОШИБКА: столбец bla.dtype не существует.
Мне известно, что это происходит из-за того, что hibernate ищет столбец дискриминатора.
Вопрос
Мой вопрос: почему Hibernate ищет столбец дискриминатора?
Тип возврата каждого репозитория уже указывает тип возврата Moo или Foo. Репозиторий Moo не мог вернуть Foo, если бы захотел!
Дискриминатор не должен требоваться для определения, верно?