2012-02-02 46 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!感谢您的信息...