私が見てきたことIterator
から、Hibernate から SQL 検索結果にアクセスするために使用する必要があります。
しかし、たとえば、単一のレコード結果しかない場合:
select * from customers where id = 1;
イテレータの使用を避ける方法はありますか?
を使用している場合は、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();
使用できますuniqueResult()
。これは単一のオブジェクトを返します (複数見つかった場合は例外がスローされます。
例:
String hql = "from User user where user.id = 1";
User user = (User) session.createQuery(hql).uniqueResult();
Hibernate は常に List を返すため、単一行の場合は index を使用して取得できます
ListName.get(0);
または
、「uniqueResult();」を使用できます。
org.hibernate.Query#uniqueResult()を試してください。ただし、その唯一one
またはnone
レコードが返されることを確認してください。