HSQLDB: count (*) возвращает десятичное число
Я использую hsqldb в памяти для выполнения тестов JUnit, для проверки объектов доступа к данным.
В DAO я использую JPA Entity Manager для запуска следующего собственного SQL-запроса:
SELECT COUNT(*) FROM AAA
Код выглядит следующим образом:
final Query query = entityManager.createNativeQuery("SELECT COUNT(*) FROM AAA");
return (Integer) query.getSingleResult() == 0;
Оператор return позволяет мне проверить, есть ли у меня счетчик, равный 0. Он прекрасно работает в рабочей среде (используется DB2).
Но в нашем тесте env, с hsqldb в памяти, это не удается, потому что запрос не возвращает целое число или int, но возвращает a BigDecimal
(приведение не удается).
Используется HsqlDB 2.3.0. Он прекрасно работал и раньше, с версией 1.8 hsqldb.
Знаете ли вы, почему возникает эта проблема ? И как я могу сделать count(*)
возвращающим целое число ?
Я хотел бы, насколько это возможно, оставить производственный код без изменений. Потому что я уже знаю, что могу решить эту проблему с помощью приведения sql, но это не идеально с моей точки зрения:
SELECT cast(COUNT(*) as int) FROM AAA