Ошибка гибернации с полиморфным запросом с использованием TABLE_PER_CLASS - PullRequest
0 голосов
/ 04 октября 2019

У меня есть класс Java, который имеет несколько подклассов. Каждый из подклассов имеет поле state. В зависимости от класса это может быть тип String, Double, Integer или Boolean. Я хочу сохранить эти классы в реляционной базе данных, и я использую Hibernate для ORM. До сих пор я думал, что InheritanceStrategy = TABLE_PER_CLASS будет правильным решением. Когда я использую postgresql (9.4 и 9.6), я сталкиваюсь с

SQL Error: 0, SQLState: 42804
UNION types boolean and integer cannot be matched 

. В случае postgres я вижу, что Hibernate создает запрос, который, очевидно, завершится неудачей (https://forum.hibernate.org/viewtopic.php?f=1&t=1002668).

На самом деле, используя базу данных и драйвер H2, это хорошо работает для меня. В общем, обходной путь может заключаться в отображении state в столбец для класса. Затем я мог бы также использовать стратегию SINGLE_TABLE. Но поскольку все работает хорошо, используя H2,Я думаю, что мой предыдущий подход не является неправильным и должен как-то поддерживаться.

Для некоторого минимального примера кода также загляните в оставшийся без ответа пост https://forum.hibernate.org/viewtopic.php?f=1&t=1002668.

...