Я работаю над проектом, который использует JPA (Hibernate), поэтому почти все запросы написаны на JPQL. Но для запроса мне нужно перейти к конкретному типу базы данных, поэтому я написал собственный запрос.
Фактически проект тестируется как с СУБД MySQL, так и с СУБД Oracle. Мой родной запрос — это "SELECT 1 FROM [...]"
; Затем мне нужно знать, существует ли результат (легко) и равен ли он 1 (вы можете возразить, что это излишне, я думаю :-)).
В обоих случаях я создаю javax.persistence.Query
с createNativeQuery(String)
и запускаю запрос следующим образом: Object r = q.getSingleResult();
(об исключениях уже позаботились).
Я обнаружил, что в MySQL r — это BigInteger
, а в Oracle — класса BigDecimal
.
Я хорошо разбираюсь в JDBC, есть ли способ (изменение запроса, объектов или вызовов методов, которые я использую), чтобы я мог быть уверен, что мой запрос вернет тот же тип данных независимо от того, с чем работает система базы данных? ? Это то, что можно настроить, это зависит от jdbc или проблема связана с драйвером?