【发布时间】:2015-10-13 10:34:56
【问题描述】:
有很多关于它的问题,但我找不到具体的答案。 我是 Hibernate 的新手,正在尝试实现分页。 假设我有两个实体:Parent 和 Child,它们的定义如下:
@Entity
@Table(name="Parents")
public class Parent{
@Id
@Column(name="id", length=255)
private String id;
@Column(name="name", length=255)
protected String name;
@OneToMany
@JoinTable(name="parents_children", joinColumns = @JoinColumn( name="parent_id"), inverseJoinColumns = @JoinColumn( name="child_id"))
@LazyCollection(LazyCollectionOption.FALSE)
protected List<Child> children;
}
@Entity
@Table(name="children")
public class Child {
@Id
@Column(name="id", length=255)
protected String id;
@Column(name="name", length=255)
protected String name;
}
每个属性还根据需要具有 getter 和 setter。
我想获得 Parents 按名称排序的首页,其中每页有 10 个结果 .
所以我从:
Session session = HibernateUtil.getSessionFactory().openSession();
Criteria c = session.createCriteria(Parent.class, "p");
c.createAlias("q.children", "ch");
c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
c.addOrder(Order.desc("name"));
c.setMaxResults(10);
c.setFirstResult(0);
List<Parent> result = c.list();
session.close();
此代码无法按预期工作,因为 setMaxResults 是在连接表上执行的,而不是在父列表上执行的(如我所愿)。
我的问题是查询应该是在父母列表上而不是在连接表上获取分页?
【问题讨论】:
标签: java mysql hibernate pagination