我遇到了问题;哪种方法更好。
我必须查询数据库 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",...
对于第一个列表,我将使用 or 运算符进行查询,并且将返回整数列表。 我可以查询以整数列表的形式获取所有列表的 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 对应于第二个等等。此外,列表的第一个 id 对应于第一个列表的名字第一个列表,即列出一个
。
请告诉您是否需要更多解释。
谢谢
最佳答案
您需要使用与 hibernate 等效的 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();
另请参阅
关于mysql - Hibernate多次查询或通过一次查询获取相关行并在java中处理它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130905/