使用HQL,我可以像这样使用动态实例化:
select new ItemRow(item.Id, item.Description, bid.Amount) from Item item join item.Bids bid where bid.Amount > 100
现在我需要使用Criteria API动态创建我的查询.我如何获得与使用HQL获得的结果相同的结果,但使用Criteria API?
谢谢.
您可以使用AliasToBean结果转换器.(Doc 1.2)它将每个投影分配给同名的财产.
session.CreateCriteria(typeof(Item), "item") .CreateCriteria("Bids", "bid") .SetProjection(Projections.ProjectionList() .Add(Projections.Property("item.Id"), "Id" ) .Add(Projections.Property("item.Description"), "Description" ) .Add(Projections.Property("bid.Amount"), "Amount" )) .Add(Expression.Gt("bid.Amount", 100)) .SetResultTransformer(Transformers.AliasToBean(typeof(ItemRow))) .List();