我正在开发一个使用 JPA (Hibernate) 的项目,所以几乎所有的查询都是用 JPQL 编写的。但是对于查询,我需要深入了解特定的数据库类型,所以我编写了一个本机查询。
该项目实际上是用 MySQL 和 Oracle DBMS 测试的。我的本机查询是"SELECT 1 FROM [...]"
; 然后我需要知道结果是否存在(简单)以及是否为 1(我猜你可能会说这是多余的 :-))。
在这两种情况下,我都在创建一个javax.persistence.Query
withcreateNativeQuery(String)
并像这样运行查询:(Object r = q.getSingleResult();
已经处理了异常)。
我发现在 MySQL r 上是 a BigInteger
,而在 Oracle 上是 class BigDecimal
。
我对 JDBC 很感兴趣,有什么方法(更改我正在使用的查询、对象或方法调用)我可以确保无论数据库系统运行什么,我的查询都将返回相同的数据类型? 这是可以配置的东西,取决于 jdbc,还是驱动程序特定的问题?