Я только что столкнулся с подобной проблемой, после обновления до HSQLDB 2.2.9 некоторые модульные тесты начали терпеть неудачу с этим сообщением об ошибке:
java.sql.SQLSyntaxErrorException: incompatible data type in conversion: from SQL type VARCHAR to java.math.BigDecimal, value: SA
Проблема присутствовала только при использовании DBUnit для манипулирования наборами данных,не было проблем при использовании Hibernate.После включения ведения журнала JDBC, я обнаружил, что DBUnit терпел неудачу после выбора, подобного этому:
select id, user from MYTABLE order by id
// then, SQLSyntaxErrorException when DBUnit tried to retrieve the 'user' column:
BigDecimal userId = resultSet.getBigDecimal(2);
Этот ответ привел меня к причине: DBUnit не избегает «пользователя»ключевое слово по умолчанию, которое объясняет, почему сообщение об ошибке имеет значение "SA", которое является системным пользователем по умолчанию HSQLDB.Однако DBUnit позволяет вам настроить экранирование , что решило проблему.
Наконец, причина того, что у Hibernate не было проблем, заключалась в том, что сгенерированный SQL был более явным, например,
select mytable0.id, mytable0.user from MYTABLE mytable0 order by mytable0.id
Сводка:
Узнайте, какая библиотека не экранирует ключевые слова в операторах SQL!