从我所见,我需要使用Iterator
从 Hibernate 访问 SQL 搜索结果。
但是如果我只有一个记录结果,例如:
select * from customers where id = 1;
有没有办法避免使用迭代器?
尝试org.hibernate.Query#uniqueResult(),但确保其唯一one
或none
记录返回。
您可以使用uniqueResult()
. 这将返回一个对象(如果找到多个对象,则会引发异常。
例子:
String hql = "from User user where user.id = 1";
User user = (User) session.createQuery(hql).uniqueResult();
Hibernate 总是返回 List 所以对于单行你可以使用索引来获取它
ListName.get(0);
或者
你可以使用'uniqueResult();'
最好使用HQL
而不是SQL
使用Hibernate
.
HQL
查询将是:
Query query = session.createQuery("from User user where user.id = :id");
query.setParameter("id", 1);
return (User) query.uniqueResult();
另一种方法是使用 的Criteria
API Hibernate
,因此查询将是:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("id", 1));
return (User) criteria.uniqueResult();