Если у меня есть одна таблица, в которой мне нужно несколько столбцов для дискриминатора, является ли мое единственное решение использовать @DiscriminatorFormula?
Я спрашиваю, потому что прототипирование дало нам некоторые результаты, которые я не могу объяснить.
Неудачный прототип. Первоначально мы создали прототип трехуровневой иерархии классов с использованием одного @DiscriminatorColumn в суперклассе и включили второй @DiscriminatorColumn в подклассы. Конечно, мы получили это предупреждение:
Столбец дискриминатора должен быть определен в корневом объекте, он будет проигнорирован в подклассе.
Мы обнаружили, что обновления работают, а вставки - нет. Так что мы отказались от этой идеи.
Успешно? prototype: Затем мы попробовали следующее, которое, похоже, работает: опустите второй @DiscriminatorColumn в подклассах и просто включите @JoinColumn во внешний ключ (который нам все равно понадобится). Возможно, поскольку соединения относятся к разным типам объектов, Hibernate / JPA, похоже, может определить, какой подкласс правильный. Кто-нибудь может это объяснить?
Должны ли мы отказаться от этого и просто использовать @DiscriminatorFormula для получения явного отношения, определенного в двух столбцах дискриминатора?