有好消息也有坏消息。您可以创建一个返回模型类型列表的条件。但是,它们不会被会话管理。原因是,一个不同的查询只能返回一个投影,而投影总是不受管理的。
下面的查询将生成与上面类似的查询,因为它在两个实体之间进行内部连接,并基于这 2 列返回一个不同的集合。结果转换器应设置为生成可以通过属性设置的某种类型。您可能可以返回一个模型类型列表,但只知道它们不会由会话管理。
Session.CreateCriteria<Model>()
.CreateAlias("Type", "t")
.Add(Restrictions.Eq("Qualifier", myQualifier)
.SetProjection(Projections.Distinct(
Projections.ProjectionList()
.Add(Projections.Alias(Projections.Property("t.Id"), "Id"))
.Add(Projections.Alias(Projections.Property("t.TypeName"), "TypeName"))))
.SetResultTransformer(Transformers.AliasToBean<ModelType>())