2012-02-02 48 views
1

嗨誰能幫我創建一個標準基於以下信息。 基本上這段代碼將被添加到一個函數中,該函數返回發現的行數 大於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:...客戶

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(); 

請任何人都提供關於如何做到這一點使用休眠條件的代碼片段,如果你需要更多信息只是告訴我,我會盡力提供更多信息。

+0

任何人都有任何想法:( – 2012-02-03 00:21:29

+0

在from子句中選擇不受條件支持。要麼使用hql或sql – Firo 2012-02-06 12:14:37

回答

0

在from子句中選擇不受條件支持。要麼使用hql或sql - Firo

Doh!感謝您的信息...