有没有办法在不使用迭代器的情况下检索SQL结果? (JAVA和休眠)

时间:2013-01-08 06:47:30

标签: java hibernate

从我看到的情况来看,我需要使用Iterator来访问来自Hibernate的SQL搜索结果。

但是如果我只有一个记录结果,例如:

 select * from customers where id = 1;

有没有办法避免使用Iterator?

4 个答案:

答案 0 :(得分:0)

尝试org.hibernate.Query#uniqueResult(),但请确保其唯一的onenone记录返回。

答案 1 :(得分:0)

您可以使用uniqueResult()。这将返回一个对象(如果找到的不是一个,则抛出异常。

示例:

String hql = "from User user where user.id = 1";
User user = (User) session.createQuery(hql).uniqueResult();

答案 2 :(得分:0)

Hibernate总是返回List,因此对于单行,您可以使用索引

来获取它

ListName.get(0);
或者你可以使用'uniqueResult();'

答案 3 :(得分:0)

如果您使用HQL,最好使用SQL代替Hibernate

HQL查询将是:

Query query = session.createQuery("from User user where user.id = :id");
query.setParameter("id", 1);
return (User) query.uniqueResult();

另一种方法是使用Criteria的{​​{1}} API,因此查询将是:

Hibernate