2

我是 NHibernate 3 和 QueryOver 的新手,我正在尝试将此 Oracle SQL 转换为 NHibernate QueryOver 表达式:

  SELECT *  
  FROM MYTABLE T1  
  WHERE T1.ID= 'ID'  
  AND T1.TYPE= 'TYPE'  
  AND T1.DATADATE= '20130101'  
  AND (T1.GENERATIONDATE || T1.GENERATIONHOUR) =  
    (SELECT MAX (T2.GENERATIONDATE || T2.GENERATIONHOUR) 
    FROM MYTABLE T2  
    WHERE T1.ID= T2.ID
    AND T1.TYPE= T2.TYPE
    AND T1.DATADATE= T2.DATADATE)

所有五列都是表主键的一部分,我想要的只是过滤选择连接 GENERATIONDATE('yyyyMMdd' 格式的 NVARCHAR2(8)日期)和 GENERATIONHOUR('HH'格式的 NVARCHAR2(2)小时的最新行) 字段。

我有一个静态类作为我的类的 QueryOver 提供程序,所以对于一个简单的查询,我正在做:

class MyTableQueryOver
{
    static QueryOver<MyTable, MyTable> ByIDAndTypeAndDate(string id, string type, string date)
    {
         return QueryOver.Of<MyTable>()
             .Where(x => x.Id == id 
                 && x.Type == type 
                 && x.Date == date);
    }
}

欢迎任何建议。

提前致谢。

4

0 回答 0