[英]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.