Hibernate criteria 使用内部连接标准语言

Hibernate criteria 使用内部连接标准语言,hibernate-criteria,Hibernate Criteria,有两个表格:评级和书籍。评级表具有Books表的外键 这些表以这种方式映射: 书籍: HasMany(x => x.RatingList).Cascade.All().Inverse(); 以及评级表: References(x => x.Books).Column("BookId").Cascade.All(); 请注意: var bks = session.CreateCriteria("Books", "b"); 使用此限制选择书籍 bks.Add(Re

有两个表格:评级和书籍。评级表具有Books表的外键

这些表以这种方式映射:

书籍:

 HasMany(x => x.RatingList).Cascade.All().Inverse();      
以及评级表:

 References(x => x.Books).Column("BookId").Cascade.All();
请注意:

var bks = session.CreateCriteria("Books", "b");
使用此限制选择书籍

 bks.Add(Restrictions.Eq("CategoryId",id));
这里的问题是,如何加入评级表

                    bks.CreateAlias("b.Rating", "c");
                    bks.List();

                    return PartialView("/Views/Home/_Books.cshtml", bks);
我需要的最终结果是选择所有书籍,但也为它们评级。在评级表中,一本书有多个评级。账面评级应为评级的平均值


一些帮助?

A
标准
允许检索特定类的列表,在您的例子中是
列表
。因此,您要求hibernate检索一个图书列表,而不是图书和评级列表

当然,您可以在结果列表中访问每本书的评级。如果它不起作用,可能会发生懒散的初始化异常。在这种情况下,您必须应用OSIVF、延长会话生存期或其他任何方法

使用条件可以联接实体以筛选查询结果。如果为评级创建别名,这是因为您希望使用评级属性筛选结果,但它不会将评级包括在结果列表中