0

我有问题;哪种方法更好。

我必须查询数据库 10000 次(或更多)才能准确获取 10000 行然后显示它们。

我可以通过仔细编写一个长查询并在本地安排它们然后显示它们来在对数据库的一个查询中执行相同的操作。

例如。我有这样的人的名字

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",...

对于第一个列表,我将使用或运算符进行查询,并将返回一个整数列表。我可以查询以整数列表的形式获取所有列表的 ID,然后依靠它们并安排它们显示 ID 吗?我的问题是我应该单独查询所有列表还是在一个查询中执行此操作然后安排结果。请帮忙。任何链接、线索或参考都是可观的。谢谢你。

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");

并且通过运行此查询返回的字符串列表可以看作是前四个 id 对应于第一个列表(List one),接下来的三个对应于第二个 & 依此类推。列表的第一个 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 回答