9

私は次の方法を持っています:

Query q = getEntityManager().createNativeQuery("SELECT COUNT(1) FROM table1 WHERE column = :column_id " + "UNION " + "SELECT COUNT(1) FROM table2 WHERE column = :column_id");
q.setParameter("column_id", column_id);

カウントのリスト (2 行になる) を取得する場合は、次のアクションを実行します。

List<BigInteger> counts = (List<BigInteger>) q.getResultList();

これは MySQL で正常に動作しています。しかし、MS SQL サーバーに接続するとすぐに、整数オブジェクトのリストを取得しています。

List<Integer>

なぜ違いがあるのですか?

4

2 に答える 2

23

JPA は JPQL クエリの戻り値の型を定義しますが、ネイティブ SQL クエリの場合、データベースが返すものは何でも取得します。これは、ネイティブ SQL クエリの要点です。

コードを Number に変更します。

List<Number> counts = (List<Number>) q.getResultList();
long count = counts.get(0).longValue();
于 2012-05-31T13:17:44.007 に答える
0

それはサーバー側で定義されています

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count

"SELECT ステートメントによって取得された行の expr の非 NULL 値の数のカウントを返します。結果は BIGINT 値です。"

http://msdn.microsoft.com/en-us/library/aa258232%28v=sql.80%29

"戻り値の型

整数」

于 2012-05-31T09:01:43.550 に答える