簡體   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