У меня возникла небольшая проблема с преобразованием результата запроса MySQL в класс Java при использовании SUM.
При выполнении простого SUM в MySQL
SELECT SUM(price) FROM cakes WHERE ingredient = 'chocolate';
поскольку price
является целым числом, кажется, что SUM
иногда возвращает строку, а иногда целое число, в зависимости от версии драйвера JDBC.
Очевидно, сервер сообщает драйверу JDBC, что результатом SUM
является строка, и драйвер JDBC иногда "удобно" преобразует ее в целое число. (см. объяснение Марка Мэтьюза).
Код Java использует некоторую BeanInfo. и Introspector для автоматического заполнения (список) bean-компонентов с результатом запроса. Но это, очевидно, не может работать, если типы данных различаются между серверами, на которых развернуто приложение.
Мне все равно, получу ли я строку или целое число, но я хотел бы всегда иметь один и тот же тип данных или, по крайней мере, заранее знать, какой тип данных я получу.
Есть ли способ узнать, какой тип данных будет возвращен MySQL SUM
из кода Java? Или кто-нибудь знает лучший способ справиться с этим?