0

問題があります。どのアプローチが優れているか。

正確に 10000 行を取得して表示するには、データベースに 10000 回 (またはそれ以上) クエリを実行する必要があります。

長いクエリを慎重に記述し、それらをローカルに配置してから表示することで、データベースへの 1 つのクエリで同じことを行うことができます。

たとえば。私はこのような人々の名前を持っています

Id Name
1 Amit
2 Mohan
3 Rohan
4 John
5 Kuneel
6 Monu
7 Savita
8 Hari
9 Raju
10 Sita

List one="Amit","Mohan","Rohan","John"
List two="Kuneel","Monu","Savita"
List three="Hari","Raju"
List n="Sita",...

最初のリストでは、 or 演算子を使用してクエリを実行し、整数のリストが返されます。すべてのリストの Id を整数のリストとして取得するクエリを実行し、それらをカウントして Id を表示するように並べることはできますか? 私の質問は、すべてのリストを個別にクエリするか、1 つのクエリでこれを実行してから結果を配置するかです。助けてください。リンク、手がかり、または参照はかなりのものです。ありがとうございました。

Mysqlクエリ:リストのIDを取得するため

Select Id from User where(name) IN("Amit","Mohan","Rohan",John");

HQl では、同等のクエリで整数のリストが返されます。また、名前は文字列の配列に格納され、クエリ文字列を作成するために使用されます。

しかし、私はそれを次のようにしたい:

 Select Id from User where(name) IN("Amit","Mohan","Rohan","John","Kuneel",
"Monu","Savita","Hari","Raju","Sita","& other names");

このクエリを実行することによって返される文字列のリストは、最初の 4 つの ID が最初のリスト (リスト 1) に対応し、次の 3 つが 2 番目に対応するなどのように表示されます。また、リストの最初の ID は最初のリストの最初の名前に対応します。すなわちlist one

さらに説明が必要かどうか教えてください。

ありがとうございました

4

1 に答える 1

1

休止状態に相当する sql IN 句を使用する必要があります。あなたの JPA 構成が何であるかはわかりませんが、次のようになる可能性があります。

List<?> listForParameters  = //initialize the list
Session session = //obtain the session 
Criteria crit = session.createCriteria(YourEntityClass.class);
crit.add(Restrictions.in("ParameterName", listForParameters  ));
List<?> list = crit.list();

こちらもご覧ください

制限 API

基準クエリ

于 2013-10-02T10:31:57.947 に答える