2014-08-29 5 views
1

Мой код является ВОССТАНОВЛЕНИЕ:Как получить список объектов в спящий режим

public List<ItemImages> getAllItemImages(int index, int max) { 
    Session session = currentSession(); 

    List<ItemImages> items = session.createCriteria(ItemImages.class) 
        .setMaxResults(max) 
        .setFirstResult(index) 
        .list(); 

    System.out.println("list size: " + items.size()); 
    return items; 
} 

проблема, с которой у меня есть мой items.size() = 0. Что случилось с выше код?

+0

Что вы подразумеваете под «когда я изменяю запрос hql»? – WilQu

+0

Извините, это заявление о неисправности –

+0

Проблема может заключаться в отсутствии данных, что 'max' установлен на ноль или что' index' слишком высок. – WilQu

ответ

0

Проверьте свою сущность на код java-кода ItemImages и на какую таблицу сопоставляется эта сущность.

Если отображение правильное, и если у вас есть данные в вашей таблице, то Hibernate будет получать данные, если вы используете критерии запросов.

Вот простой пример, чтобы проверить эту функцию:

ItemImages лицо:

@Entity 
public class ItemImages { 
    @Id 
    @GeneratedValue 
    private int id; 
    private String name; 
    // Constructor, Setters & Getters 
} 

Вот пример кода для тестирования с использованием критериев запросов:

Сохранение ItemImages:

private static void saveItemImages() { 
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.getTransaction().begin(); 
    ItemImages i1 = new ItemImages("i1"); 
    ItemImages i2 = new ItemImages("i2"); 
    ItemImages i3 = new ItemImages("i3"); 
    ItemImages i4 = new ItemImages("i4"); 
    session.save(i1); 
    session.save(i2); 
    session.save(i3); 
    session.save(i4); 
    session.getTransaction().commit(); 
} 

Получение данных с использованием критериев запроса, я передаю индекс, как 0 и max в 2:

public static List<ItemImages> getAllItemImages(int index, int max) { 
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.getTransaction().begin(); 

    List<ItemImages> items = session.createCriteria(ItemImages.class) 
        .setMaxResults(max) 
        .setFirstResult(index) 
        .list(); 
    session.getTransaction().commit(); 
    System.out.println("list size: " + items.size()); 
    return items; 
} 

Вывод этого кода:

размер списка: 2

запроса генерируется Hibernate для этого Критерии:

select * from (select this_.id as id1_0_0_, this_.name as name2_0_0_ 
from ItemImages this_) where rownum <= ? 
Смежные вопросы