У меня есть следующий раздел кода, который я хочу использовать для возврата коллекции моего объекта:
Session session = HibernateUtil.getSession();
List<MyObj> myObjList = (List<MyObj>)
session.createCriteria(MyObj.class)
.add(Restrictions.eq("searchField", searchField)).list();
Iterator<MyObj> myObjIt = myObjList.listIterator();
log.debug("list size: " + myObjList.size());
while(myObjIt.hasNext()){
MyObj myObj = myObjIt.next();
log.debug(myObj.getMyField());
}
Однако мой журнал продолжает печатать одну и ту же запись столько раз, сколько размер списка. Если я немного рефакторинг, мой код работает правильно, как это:
SQLQuery query = session.createSQLQuery(
"select my_field from my_table where search_field = :searchField"
);
query.setParameter("myField", myField);
List result = query.list();
for(Iterator iter = result.iterator(); iter.hasNext();){
Object[] row = (Object[]) iter.next();
log.debug(row[0]);
}
Что-то не так в моем первом сегменте кода? Я должен быть в состоянии пойти по этому пути в любом случае, и, поскольку я использую Hibernate, я бы предпочел, чтобы ORM работал как положено, поэтому я бы предпочел первый метод перед вторым. У кого-нибудь есть мысли?
Fwiw, я использую Hibernate 3.5.4 final, Hibernate-validator 4.2.0 Final, hibernate-search 3.4.0 Final и hibername-c3p0 3.6.5 final, все из репозиториев maven.
Отредактировано для уточнения на основе комментариев.