0

为了简单明了,假设我有这三个表。

员工 [ id ]

员工 姓名 [ 员工 ID,姓名 ]

EmployeeAddress [employeeId,地址]

定义的唯一属性/关系在“子表”中 EmployeeName 和 EmployeeAddress

  • 员工姓名属于员工
  • 员工地址属于员工

主 Employee 表中没有属性/关系(集合),例如

  • 员工有很多员工姓名
  • 员工有很多员工地址。

我只想在 EmployeeName 和 EmployeeAddress 之间使用DetachedCriteria 执行联接 (不涉及 Employee),因此

select EmployeeName.name, EmployeeAddress.address
from EmployeeName inner join EmployeeAddress
where EmployeeName.employeeId = EmployeeAddress.employeeId and EmployeeAddress.address like '%somelocation%' order by EmployeeAddress.address

4

1 回答 1

1

Not exactly the query you're looking for and haven't tested if it actually works.. but it may help you:

var addressCriteria = DetachedCriteria.For<EmployeeAddress>("ea")
                                      .Add(Restrictions.Like("ea.Address", "somelocation", MatchMode.Anywhere));
var nameCriteria = DetachedCriteria.For<EmployeeName>("en")
                                   .Add(Subqueries.PropertyIn("en.Employee", addressCriteria))
                                   .SetProjection(Projections.Property("en.Name"));
于 2011-01-26T13:43:52.307 回答