6

重複の可能性:
Hibernate を使用して行をカウントするにはどうすればよいですか?

データベースの基準でレコード数をカウントしたい。
次のクエリを使用してみます

String queryString = "SELECT Count(*) FROM my_table";  
Query query = entityManager.createNativeQuery(queryString);  

しかし、これを実行して結果を得る方法はありませんQuery query
を使用してレコードを数えることができることを知っています

String queryString = "SELECT * FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
query.getResultList().size();  

質問、Count(*)パフォーマンスの高いクエリはありますか? の場合yes、クエリを実行するにはどうすればよいCount(*)ですか?

4

2 に答える 2

9

を呼び出すことで、最初のクエリを実行できますQuery.getSingleResult()

String queryString = "SELECT Count(*) FROM my_table";  
Query query = entityManager.createNativeQuery(queryString); 
System.out.println(query.getSingleResult());

カウントを変数に割り当てたい場合は、適切な型にキャストする必要があります (DB に依存する可能性がありますが、ほとんどの場合は Long です)。Hibernate は DB からテーブル全体を取得して分析し、すべての行をカウントする必要があるため、2 番目のクエリは非常に非効率的です。

于 2012-10-24T12:30:12.917 に答える
0

query.getSingleResult() を呼び出してみましたか?

于 2012-10-24T12:26:32.177 に答える