2011-12-01 14 views
9

単一値をスカラーデータ型にマップするJPAのサポートはありますか?例えば、いくつかの変数JPAを使用して単一の値を取得していますか?

int numerOfEmployees 

に次のクエリ

SELECT COUNT(*) AS NUM FROM EMPLOYEES 

にNUMをマップしたり、私は、このようなユースケースのためにJDBCを使用する必要が行うには?場合によっては、結果タイプは、データベース、すなわちに依存してもよいこと

long num = ((Number)em.createNativeQuery("select count(*) from Employees") 
        .getSingleResult()).longValue(); 

注:JPQLは

long num = ((Number)em.createQuery("select count(e) from Employee e") 
        .getSingleResult()).longValue(); 

などからネイティブSQLクエリをクエリから

答えて

14

はい、あなたはスカラー型を返すことができますそれはBigDecimalのようなものです。

+0

Doh、ありがとう。 docsから可能であることを理解できませんでした:http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery(java.lang.String)[私はオブジェクト型を取得し、そのintValue()を使用してサンプルを作成します。] –

+0

'BigInteger'のスーパータイプである'(Number)... longValue() 'を使用するようにソリューションを更新しました。このケースで 'Number'のサブタイプを返さないDB /ドライバですが、元の答えの'(long) 'キャストは"決して "機能しません。 (私はあなたがタイプマッピングとして 'Number.class'を指定できるかどうか疑問に思っています(Double.classがうまくいかないようです:http://stackoverflow.com/questions/8959771/jpql-native-query-using-合計とカウント) – eckes

関連する問題