Ваш код должен работать, но я думаю, что проблема заключается в определении внешних ключей. `
parentColumns = "fighter_id",
childColumns = "fighter_id"
вы можете удалить его и попробовать?
`
Да, это будет только Oracle, но в JDBC нет универсального способа сделать это.
Большинство реализаций пула соединений имеют параметр конфигурации, в котором вы можете указать SQL, который будет использоваться для пинга, тем самым подталкивая ответственность выяснить, как это сделать с пользователем.
Это кажется лучшим подходом, если только кто-то не придумал для этого небольшой вспомогательный инструмент (конечно, он исключает использование потенциально даже более быстрых методов, не основанных на SQL, таких как внутренняя функция ping Oracle )
Я тоже не знаю общего решения. Для IBM UDB в iSeries (и, возможно, в других системах DB2) это будет
select 1 from SYSIBM.SYSDUMMY1;
Возможно, я ушел обедать по этому поводу, но не могли бы вы просто выполнить какой-нибудь бессмысленный запрос, например:
SELECT * FROM donkey_giraffe_87
Я не очень много знаю об обработке ошибок JDBC, но, возможно, вы могли бы проверить, сообщает ли база данных хотя бы о том, что таблица не существует. Если коды ошибок JDBC зависят от производителя, в Spring Framework есть несколько утилит для сопоставления этих кодов с более значимыми исключениями.
Не могли бы вы просто выполнить
SELECT 1
без предложения FROM для большинства баз данных?