有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有一种在hibernate上查询而不生成SQL的方法?

我需要像这样查询我的数据库(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)
}

但是,这种方法会生成许多SQL。考虑到我将搜索几乎所有的ID,有一个
使用条件使所有对象在其上搜索的方法。没有自己的工具


共 (1) 个答案

  1. # 1 楼答案

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

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

    然后使用 地图猫。get(catid)