Невозможно использовать объединения в базе данных H2 - PullRequest
0 голосов
/ 26 февраля 2019

Я сталкиваюсь со странной проблемой при выполнении определенных запросов через Java Hibernate при использовании H2 (1.3.168) в качестве локальной базы данных.Похоже, что Hibernate пытается выполнить серию операторов SELECT, но одна из них завершается с неопределенной ошибкой.

Файл журнала сообщает, что несколько успешно выполненных операторов SELECT имеют только одну участвующую таблицу, напримерSELECT ... FROM T1 WHERE ...;

Однако, когда он попадает в простую инструкцию LEFT OUTER JOIN в инструкции, он выдает следующую ошибку:

General error: "java.lang.NoClassDefFoundError: org/h2/table/TableFilter$2" [50000-168]

Я взялточно такой же запрос сообщил Hibernate и попытался выполнить его непосредственно в консоли H2.Та же ошибка.

Я заменил LEFT OUTER JOIN простым JOIN, та же ошибка.Я удалил вторую таблицу из СОЕДИНЕНИЯ и просто ВЫБЕРИЛ из первой таблицы, она ВЫБИРАЕТ просто отлично.Сделал то же самое для второй таблицы самостоятельно, без проблем, например

SELECT * FROM T1;

Пробовал кучу других таблиц с объединениями ... ошибка появляется снова.

SELECT * FROM T1 t1 JOIN T2 t2 ON t1.pk_id = t2.fk_id;

Кто-нибудь знаетв чем проблема с H2?

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема была в одном из недостающих объектов последовательности в скрипте drop-воссоздать, когда приложение выполнялось при запуске (не имело никакого отношения к Hibernate / Spring).Запустил сценарии отдельно в H2 и сравнил их с другим набором операторов create / drop, чтобы выяснить, работает ли последний, а не первый.

Очень странно, что H2 полностью разваливается из-за этого и не позволяетоператоры с JOIN в них выполняются, в то время как простые запросы без JOIN работают нормально.

...