2014-08-29 70 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 2014-08-29 07:20:06

+0

對不起,這是錯誤陳述 – 2014-08-29 07:22:42

+0

問題可能是沒有數據,'max'設置爲零或'index'太高。 – WilQu 2014-08-29 07:26:44

回答

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(); 
} 

個使用條件查詢獲取數據,我傳遞索引作爲0max作爲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; 
} 

輸出此代碼的:

列表大小:由Hibernate此產生的2

查詢條件:

select * from (select this_.id as id1_0_0_, this_.name as name2_0_0_ 
from ItemImages this_) where rownum <= ?