1

成功せずに、NHibernate で QueryOver を使用してクエリを作成しようとしています。取得する必要がある結果の SQL は次のとおりです。

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; }
}

多分私は明らかな何かを見逃しています

4

1 に答える 1

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)

補足:エンティティクラス名は単数である必要があります。

于 2011-04-27T17:04:46.517 に答える