我在 Tomcat 7.0.35(Spring 3.1、Hibernate 3.6.1、JPA 2.0)上运行 Spring + Hibernate Web 应用程序。
这个应用程序有一个页面,它通过 Hibernate 的标准从数据库中获取数据(我知道我不必这样做)。服务层只是简单地调用数据层。这是代码:
Criteria criteria = sessionFactory.openSession().createCriteria(Article.class);
criteria.addOrder(Order.desc("updatedTime"));
criteria.add(Restrictions.eq("account", acc));
criteria.add(Restrictions.eq("draft", true));
criteria.setMaxResults(1);
Article s = (Article) criteria.uniqueResult();
return s;
Tomcat 只能处理来自该页面的几个请求,然后它变得无响应。我可以看到浏览器一直在等待服务器响应(Firefox 状态栏显示“等待主机”。)
我没有看到任何错误消息,例如 OutOfMemory 等。浏览器似乎永远等待。
如果我将其更改为 JPA,如下所示:
@NamedQuery(name = "Article.getMostRecentDraftArticle", query = "select x from Article x where x.account = :account and x.draft = 1 order by x.updatedTime desc"),
......
Query q = getSession().getNamedQuery("Article.getMostRecentDraftArticle");
q.setParameter("account", acc);
q.setMaxResults(1);
List list = q.list();
if (list.size() == 0)
return null;
else
return (Article) list.get(0);
然后一切正常。
我使用 Hibernate 的 Criteria API 会出现什么问题?
感谢您的任何意见!
干杯。