如何在hibernate中检索对象列表

时间:2014-08-29 07:15:40

标签: hibernate

我的检索代码是:

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.上面的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

检查您的实体是否有ItemImages java代码以及此实体映射到哪个表。

如果映射正确并且表中有数据,那么如果您使用条件查询,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 <= ?