私は JPA (Hibernate) を使用するプロジェクトに取り組んでいるため、ほとんどすべてのクエリは JPQL で記述されています。しかし、クエリについては、特定のデータベース タイプに取り掛かる必要があるため、ネイティブ クエリを作成しました。
このプロジェクトは、実際には MySQL と Oracle DBMS の両方でテストされています。私のネイティブクエリは"SELECT 1 FROM [...]"
; 次に、結果が存在するかどうか (簡単) と、それが 1 かどうかを知る必要があります (それは冗長であると主張できます:-))。
どちらの場合もjavax.persistence.Query
withcreateNativeQuery(String)
を作成し、次のようにクエリを実行しますObject r = q.getSingleResult();
(例外は既に処理されています)。
私が見つけたのは、MySQL では r が aBigInteger
であるのに対し、Oracle では class であるということBigDecimal
です。
私はJDBCにうんざりしています.データベースシステムがどのようなものに対して実行されても、クエリが同じデータ型を返すことを確認できる方法(クエリ、オブジェクト、または使用しているメソッド呼び出しを変更する)はありますか? ? これは構成できるものですか、jdbc に依存しますか、それともドライバー固有の問題ですか?