我有以下Criteria查询(使用Lambda扩展):
var workflowResult = repository.GetSession()
.CreateCriteria<Core.Domain.Application>()
.SetFetchMode<Core.Domain.Application>(app => app.ApplicationWorkflows, FetchMode.Join)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.Future<Core.Domain.Application>();
这是正常的。每个应用程序都急切地加载 ApplicationWorkflows集合。但是,我想更深入一点 并加载每个ApplicationWorkflow的ApplicationStatus对象。一世 可以使用以下HQL执行此操作但希望转换为 标准:
var workflowQuery = "SELECT DISTINCT app" +
" FROM Application app" +
" JOIN FETCH app.ApplicationWorkflows awf" +
" JOIN FETCH awf.ApplicationStatus";
我被建议使用以下内容,但在所有情况下都有问题:
.SetFetchMode<Core.Domain.Application>(app => app.ApplicationWorkflows[0].ApplicationStatus, FetchMode.Join)
答案 0 :(得分:0)
试试这个。
var workflowResult = repository.GetSession()
.CreateCriteria<Core.Domain.Application>()
.CreateAlias("ApplicationWorkflows", "awf")
.SetFetchMode("ApplicationWorkflows", FetchMode.Join)
.SetFetchMode("awf.ApplicationStatus", FetchMode.Join)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.Future<Core.Domain.Application>();