繁体   English   中英

Hibernate Criteria如何对父子关系上的行计数投影进行排序

[英]Hibernate Criteria how to sort a row count projection on a parent child relationship

嗨,有人可以帮助我根据以下信息创建条件。 基本上,此代码将添加到一个函数中,该函数返回找到的行数,其子行数大于10。值10是动态的。

我已经被这个问题困扰了一天,需要一些帮助。

请注意,我无法控制数据库本身,因此无法使用视图或更改数据库架构。 同样,这是问题的简化版本,省略了客户端和地图字段的其他属性,并且将投影和条件的创建重构为通用辅助方法。

public class client
{
private int id;
private string code;
@OneToMany(fetch=FetchType.Lazy)
@JoinColumn(name="code", nullable=true)
private List <MapFields> mapFields;
}

public class MapFields
{
private int id;
private string code;
}

如何使用休眠条件执行此sql查询。

SELECT COUNT(*)
FROM 
(
    SELECT MapFields.code
    FROM Client LEFT JOIN MAPFields on Client.code
    GROUP BY MapFields.code
    HAVING COUNT(MapField.code) > 10
) AS A

我尝试了以下方法,但无济于事。 我一直遇到一个异常,该异常告诉我无法解析属性。

org.hibernate.QueryException:无法解析属性:numberOfMapFields of ... ...客户端

Criteria criteria = getCurrentSession().createCriteria(Client.class)

criteria.createAlias("mapFields", "mapFields", CriteriaSpecification.Left_Join)

ProjectionList pl = Projections.projectionList();

pl.add(Projections.count("mapFields.code", "numberOfMapFields"));

pl.add(Projections.rowCount());

criteria.setProjection(projectionList);

criteria.add(Restriction.ge("numberOfMapFields", "10"))

criteria.list();

请任何人都可以提供有关如何使用休眠条件来执行此操作的代码段,如果您需要更多信息,请告诉我,我将尝试提供更多信息。

条件不支持from子句中的selects。 使用hql或sql-Firo

h! 谢谢提供信息...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM