У меня есть классический Hibernate @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
с @DiscriminatorFormula
. Это работает нормально. Однако в базе данных имеется около 500 различных значений для @DiscriminatorValue
, и мне нужно сопоставить примерно 30 из них с классами Java (дочерними ), а остальные — с родительским классом Java.
Проблема может быть смоделирована как пример наследования класса Animal.
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("...")
public class Animal implements Serializable {
...
@Column
public String getName() {... }
}
Итак, у меня есть около 30 подклассов Animal, определенных в коде Java с помощью @DiscriminatorValue
. Когда Hibernate находит неизвестное значение для дискриминатора, он выдает WrongClassException
. Однако мне нужно сопоставить эти неизвестные значения дискриминатора с одним объектом, лучше всего с классом Animal. (В таких случаях мне нужно использовать только метод getName ().)
Я знаю, что одно из решений состоит в том, чтобы поместить SQL CASE в @DiscriminatorFormula
, но тогда я должен указать там все 30 известных значений дискриминатора (плюс больше, когда мне нужно будет добавить другие ). Поэтому я ищу более гибкое решение.
P.S. Это устаревший код, поэтому я не могу изменить модель.