在HQL中,我可以这样做:
select roleHeldByOwner.TargetPerson
from Person roleOwner
join roleOwner.RolesOnPeople roleHeldByOwner
where roleOwner.Id = :roleOwnerId
如何在Criteria查询中实现相同的功能?具体选择不是from
子句中第一个实体的东西。
答案 0 :(得分:1)
您可以通过创建子标准并使用预测选择标量结果来加入。您的Criteria查询可能类似于:
session.CreateCriteria(typeof(Person))
.Add(Restrictions.Eq("Id", roleOwnerId))
.SetProjection(Projections.Property("TargetPerson"))
.CreateCriteria("RolesOnPeople", JoinType.InnerJoin) // Or LeftOuterJoin, etc.
.List();
如果您需要多个投影,请使用ProjectionList,如:
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("...", ...))
.Add(...)
...
)
我不确定您的域名是什么样的,或者您想要从查询中获得什么,因此上述内容可能并不完全正确。但是,它应该是你需要开始的。