我有一个建模为
的用户实体@Entity
class User {
@ManyToMany
@JoinTable(name="user_roles",
joinColumns=@JoinColumn(
name="user_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(
name="role_id", referencedColumnName="id")
)
public Set<Role> getRoles() {
return roles;
}
}
我想在分页视图中列出这个用户特定的角色。对于我正在使用HibernateTemplate的其他类
public PagedBean<User> findUsers(inal Status status, final PageParameters pageParameters) {
return (PagedBean<User>) hibernateTemplate.execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria crit = getUserByStatusCriteria(status, session);
crit.addOrder(Order.asc("id"));
Criteria critWithoutOrder = getUserByStatusCriteria(status, session);
PagedResultBean<RssFeedSource> pagedResultBean = new PagedBean<User>(pageParameters);
return populateFromCriteria(crit, critWithoutOrder, pagedBean);
}
private Criteria getUserByStatusCriteria(final Status status, Session session) {
Criteria c = session.createCriteria(User.class);
c.add(Restrictions.eq("status", status));
return c;
}});
}
如何以不同于实体的'user_roles'的方式实现此分页结果?
答案 0 :(得分:1)
在Hibernate中:
Query q= session.createQuery("SELECT r FROM User u JOIN u.roles r WHERE u.id = :userId");
q.setString("userId", userId);
q.setMaxResults(10); // page size 10
q.setFirstResult(30); // page 4
List<?> roleList = q.list();