Mar*_*arc 11 nhibernate hibernate criteria subquery
我正在尝试这样做,但使用Criteria而不是HQL:
select user from User where user in (
select user from UserDomain where domain.id = "XXX"
)
Run Code Online (Sandbox Code Playgroud)
用户是与one-to-many联接表UserDomain 有关系的实体.这里的要点只是找到链接到Domainid ="XXX"的用户.
这看起来应该很简单......但到目前为止,我没有运气任何有用的文档.
Rad*_*ler 27
子查询非常有用,您需要搜索具有一对多 UserDomains的用户.在这种情况下,WHERE UserId IN (subquery)带来了很大的优势:我们仍在使用平面User表/实体......所以我们可以进行正确的分页.
这是文档15.8.分离的查询和子查询
草案可以是:子查询:
DetachedCriteria userSubquery = DetachedCriteria.forClass(UserDomain.class, "ud")
// Filter the Subquery
.add(Restrictions.eq(UserDomain.DOMAIN, domain))
// SELECT The User Id
.setProjection( Projections.property("ud.userId") );
Run Code Online (Sandbox Code Playgroud)
主要问题是:
Criteria query = session.createCriteria(User.class, "u")
.add( Subqueries.propertyIn("u.id", userSubquery) );
Run Code Online (Sandbox Code Playgroud)
现在我们有一个查询,可以用于分页
我终于找到了。事实证明这毕竟不是那么难......一旦你知道了!
criteria = criteria.createCriteria(User.USER_DOMAINS).add(Restrictions.eq(UserDomain.DOMAIN, domain));
Run Code Online (Sandbox Code Playgroud)
是的,有,在 Javadoc 中就在我面前: http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/api/org/hibernate/Criteria.html
| 归档时间: |
|
| 查看次数: |
27617 次 |
| 最近记录: |