多次Hibernate查询或通过一个查询获取相关行并在java中处理它们

时间:2013-10-02 06:08:31

标签: mysql sql hibernate select

我遇到了问题;哪种方法更好。

我必须查询数据库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中,等效查询将返回一个整数列表。 名称也将存储在String&数组中。将用于创建查询字符串。

但我想这样做:

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

并且通过运行此查询返回的字符串列表可以看作前四个ID对应于第一个列表(列表一),接下来三个到第二个&此外,列表的第一个ID对应于第一个列表的第一个名称,即list one

Plz告诉你是否需要更多的解释。

谢谢

1 个答案:

答案 0 :(得分:1)

你需要使用sql IN子句等效于hibernate。我不确定你的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();

另见

Restrictions api

Criteria Queries