Хорошо. Итак, я проверил библиотеку, которую использовал в своем обычном Java-приложении, и это Hibernate 5.3.7. В моем приложении maven я использую 5.4.0.
Поэтому я изменил библиотеку гибернации в своем приложении maven на:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.7.Final</version>
</dependency>
И теперь все работает. Никаких жалоб на какой-то странный, какой-то странный тип Sql Variant.
Эта проблема также касается поиска в Hibernate 5.11.0. Вы должны использовать 5.10.5.Final.
К сожалению, у меня нет необходимых полномочий, чтобы поднять это с командой hibernate на их трекере проблем. Надеюсь, один из них найдет этот пост и обратится к нему. Я знаю, что они работают над Hibernate Search 6 и Hibernate ORM 6, так что это хорошие новости!
Я подозреваю, что Вы рявкаете неправильное дерево. Помните, для пользователя возможно внезапно потерять их интернет-соединение, их браузер мог отказать или выключить их использующее компьютеры большой красный переключатель. Будут случаи, где сервер просто никогда не получает известие от браузера снова.
Лучший способ сделать это с переключателем "мертвеца". Так как Вы сказали, что они вытягивают информацию от базы данных каждые несколько секунд, используйте ту возможность сохранить (в базе данных) метку времени в последний раз, Вы получили известие от данного клиента.
Каждую минуту или так, на сервере, делают запрос для нахождения клиентов, которые не опросили в течение нескольких минут и установили пользователя офлайн... все на сервере.
JavaScript не может быть надежным, потому что я могу закрыть свой браузер abending он.
Более надежный метод мог бы быть должен отправить периодический, "привет я - все еще живые" сообщения с браузера на сервер и имею изменение сервера состояние, когда это прекращает получать эти сообщения.
Я могу только согласиться с Joel здесь. Нет никакого надежного способа для Вас знать, когда агент HTTP хочет завершить разговор.