3
我對NHibernate和QueryOver相當陌生,我無法讓NHibernate生成我需要的SQL。QueryOver - 爲Join添加附加條件
我需要做一個連接,並有一個額外的標準,所以我避免從我加入的表中獲取大量數據。
我從QueryOver接收的SQL是:
SELECT * FROM adresse this_
left outer join r580_test.afvigelse remarkalia1_ on this_.id=remarkalia1_.adrid
left outer join r580_test.afvigelseklagepunkter remarkcomp5_ on remarkalia1_.id=remarkcomp5_.afvigelseid
left outer join r580_test.klagepunkter complainta2_ on remarkcomp5_.klagepunktid=complainta2_.id
WHERE this_.id = 16633 and remarkalia1_.dato between '2009-03-13 00:00:00' and '02-03-2012 16:34:35'
我想這是什麼(間已被轉移到年底第一左外,其中日加入):
SELECT * FROM adresse this_
left outer join r580_test.afvigelse remarkalia1_ on this_.id=remarkalia1_.adrid and remarkalia1_.dato between '2009-03-13 00:00:00' and '02-03-2012 16:34:35'
left outer join r580_test.afvigelseklagepunkter remarkcomp5_ on remarkalia1_.id=remarkcomp5_.afvigelseid
left outer join r580_test.klagepunkter complainta2_ on remarkcomp5_.klagepunktid=complainta2_.id
WHERE this_.id = 16633
我QueryOver看起來是這樣的:
adr = session.QueryOver<Address>()
.Where(x => x.Id == 16633)
.JoinQueryOver<Remark>(y => y.Remarks).Where(y => y.Created > DateTime.Now.AddDays(-14))
.JoinAlias(y => y.RemarkComplaint,() => complaintAlias, JoinType.LeftOuterJoin)
.SingleOrDefault();
任何人有關於如何解決這個問題的想法?
我似乎無法使其工作。我無法找到JoinQueryOver的重載,它讓我可以完成你所描述的任務。我只能給路徑,別名和JoinType。你使用的是什麼版本的NHibernate? – Ramius 2012-03-05 15:04:24
我正在使用NHibernate 3.2。 – Fourth 2012-03-05 15:47:51
這似乎不是3.3的一部分,最接近的匹配需要'ICriterion withClause',這意味着回到魔術字符串。 – Shagglez 2013-02-12 17:32:35