簡體   English   中英

休眠標准和行數限制

[英]Hibernate Criteria and row count restriction

我有兩個名為ParentChild的實體, 以一對多關系鏈接。 Child實體具有布爾值isStudent屬性。

我如何使用Hibernate Criteria API獲得至少有一個具有isStudent = true Child的所有Parent實體?

我試圖使用Projection對象來計算至少有一個具有正確設置屬性的Child的父項,然后返回行數大於零的那些,如下面的代碼片段(不起作用) ,雖然):

Criteria criteria = getCurrentSession().createCriteria(Parent.class);

criteria.setProjection(Projections.alias(Projections.rowCount(), "count"))
.add(Restrictions.gt("count", 0)).createCriteria("children")
.add(Restrictions.eq("isStudent", true));

謝謝你的幫助

這對我有用:

DetachedCriteria crit          = DetachedCriteria.forClass( Parent.class, "theparent" );
DetachedCriteria countSubquery = DetachedCriteria.forClass( Child.class , "child"     );

countSubquery
    .add( Property.forName("theparent.id").eqProperty( "parent.id" ) )
    .setProjection(Projections.count("id"));

crit.add(Subqueries.lt(Long.valueOf(0), countSubquery));

[編輯:修復了@brabenetz指出的錯誤]

父母和孩子之間存在雙向關系,即孩子有一個字段“父母”它返回有> 0個孩子的父母。

RobAu的答案幾乎就是我們所需要的。 但它有一個小錯誤:而不是子查詢。 gt (..)你需要子查詢。 lt (...)

crit.add(Subqueries.lt(Long.valueOf(0), countSubquery));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM