2
我一直在做一些評估即將到來的項目的NHibernate的工作,並且正在通過一些用例來了解它如何執行。我還沒有找到一種方法來使用Criteri API來表達下面的查詢。使用ICriteria的NHibernate相關子查詢
兩個非常基本的表(上剪下來的這個例子的目的)
CREATE TABLE Person
(
PersonNo INT,
BirthDate DATETIME
)
CREATE TABLE PersonDetails
(
PersonNo INT,
FirstName VARCHAR(30),
Surname VARCHAR(30)
)
和查詢......
SELECT P.PersonNo, P.FirstName, P.Surname
FROM Persons P
JOIN PersonDetails PD
ON PD.PersonNo = P.PersonNo
AND EffDate =
(
SELECT MAX(EffDate)
FROM PersonDetails
WHERE PersonNo = PD.PersonNo
)
WHERE P.PersonNo = 1
基本上,我只是想變平的人的主記錄和最新的人修改記錄合併爲一個對象。我能夠使用HQL輕鬆完成此操作,但無法使相關子查詢正常工作。
這是我的嘗試。
var pdSub = DetachedCriteria.For<PersonRevision>("pdSub")
.SetProjection(
Projections.ProjectionList()
.Add(Projections.Max("EffDate").As("MaxEffDate"))
.Add(Projections.Property("Person.PersonNo").As("PersonNo"))
.Add(Projections.GroupProperty("Person.PersonNo")))
.Add(Expression.EqProperty("pdSub.Person.PersonNo", "p.PersonNo"));
var p =
session.CreateCriteria<Person>("p")
.Add(Restrictions.Eq("p.PersonNo", 1))
.Add(Subqueries.Eq("p.PersonNo", pdSub))
.List();
子查詢pdSub已定義的關係(由PersonNo),但子查詢類需要另一關係來定義(例如等式)?
任何幫助,將不勝感激。
感謝, 約翰