2011-04-27 75 views
1

我想在沒有成功的情況下在NHibernate中使用QueryOver創建一個查詢。 產生的SQL我需要得到的是以下幾點:加入在nhibernate查詢

select mn.Story_ID from Membership_Updates mn 
join Updates upd on mn.Story_ID = upd.Story_ID 
where mn.MembershipUser_ID = 1 
group by mn.Story_ID having MAX(mn.DismissTime) <= MAX(upd.CreationDate) 

我的課:

public class MembershipUpdates 
{ 
    public MembershipUpdates() 
    { 
    DismissTime = DateTime.Now; 
    } 

    public virtual int Id { get; set; } 
    public virtual MembershipUser User { get; set; } 
    public virtual Story Story { get; set; } 
    public virtual DateTime DismissTime { get; set; } 
} 

public class Updates 
{ 
    public Updates() 
    { 
    CreationDate = DateTime.Now; 
    } 

    public virtual int Id { get; set; } 
    public virtual DateTime CreationDate { get; private set; } 
    public virtual Story Story { get; set; } 
    public virtual string Message{ get; set; } 
} 

也許我失去了一些東西明顯

回答

2

我可能是錯的,但我不認爲QueryOver允許你加入不相關的實體(不用求助於子查詢)。

我會用HQL此:

select mn.Story 
from MembershipUpdates mn, Updates upd 
where upd.Story = upd.Story 
and mn.User.id = 1 
group by mn.Story 
having MAX(mn.DismissTime) <= MAX(upd.CreationDate) 

旁註:你的實體類的名稱應爲單數。

+0

謝謝。我以前很怕那個。 HQL將在那時:) – Iridio 2011-04-28 09:14:30