我的检索代码是:
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 :(得分: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 <= ?