这是一种在不生成SQL的情况下查询hibernate的方法吗?

时间:2014-04-08 18:39:07

标签: java hibernate criteria

我需要查询我的数据库(postgres),如下所示:
实体:

class Cat{
  int id;
  String name;
}

主要课程:

int [] idCats = {1,2,7,5,8,4,9,10,12,14};

for(int id : idCats){ 
    Cat cat = session.load(Cat,id);
    (do something with cat, according your name)
}

但是,这种方法可以产生很多sqls。考虑到我将搜索几乎所有的ID,有一个 使用标准将所有对象进行搜索的方法。没有自己实施。

1 个答案:

答案 0 :(得分:0)

您可以使用hibernate的二级缓存功能。但是如果您的应用程序很简单并且您只想获取带有id的cat,那么将查询结果存储在类似

的哈希映射中
Map<Integer, Cat> mapCats = new HashMap<Integer, Cat>(); 

您可以使用for循环从DB迭代列表。

Map<Integer, Cat> mapCats = new HashMap<Integer, Cat>();
for(Cat oneCat: listCats) { 
    mapCats.put(oneCat.id, oneCat);
}

然后使用检索     mapCats.get(CATID);