【发布时间】:2012-03-14 03:52:11
【问题描述】:
所以,我通过 id 获得了特定实体的多个实例:
for(Integer songId:songGroup.getSongIds()) {
session = HibernateUtil.getSession();
Song song = (Song) session.get(Song.class,id);
processSong(song);
}
这会为每个 id 生成一个 SQL 查询,所以我想到我应该一次执行此操作,但除了运行查询外,我找不到在一次调用中获取多个实体的方法。所以我写了一个查询
return (List) session.createCriteria(Song.class)
.add(Restrictions.in("id",ids)).list();
但是,如果我启用二级缓存并不意味着我的旧方法将能够从二级缓存返回对象(如果它们之前已被请求),但我的查询将始终转到数据库。
这样做的正确方法是什么?
【问题讨论】:
-
你有没有想出办法做到这一点?
标签: java hibernate entity query-performance identifier