NHibernate从案例中选择

NHibernate从案例中选择,nhibernate,criteria,Nhibernate,Criteria,我对NHibernate中的查询有问题 原始SQL查询如下所示 SELECT Id ,Table1_Id ,Table2_Id ,Table3_Id FROM ( SELECT Id ,Table1_Id ,Table2_Id ,Table3_Id FROM Table_123 WHERE Table2_Id = 72 UNION SELECT 100 As Id ,151 As Table1

我对NHibernate中的查询有问题

原始SQL查询如下所示

SELECT Id
  ,Table1_Id
  ,Table2_Id
  ,Table3_Id
FROM (
    SELECT Id
      ,Table1_Id
      ,Table2_Id
      ,Table3_Id
    FROM Table_123
    WHERE Table2_Id = 72

    UNION SELECT
      100 As Id
     ,151 As Table1_Id
     ,72 As Table2_Id
     ,20 As Table3_Id
) a
WHERE Table2_Id = 72
我需要用NHibernate.Criteria编写这个代码。 可能吗

格里兹
Riyixy标准和HQL不支持联合

因此,您不能使用当前形式的criteria/HQL执行此查询,但可以使用如下本机SQL查询:

IQuery sqlQuery = sess.CreateSQLQuery("select Id,Table1_Id....", "ClassName", typeof(ClassName));
sqlQuery.SetMaxResults(50);
IList entities = sqlQuery.List();
为了便于将来参考,最好使用抽象类型来表达您的问题。表1/表2/表3使问题难以理解


Union select真的有必要吗?这基本上是在resultset中添加了一行,如果希望返回该实体,您也可以在代码中轻松创建该实体

标准和HQL不支持联合

因此,您不能使用当前形式的criteria/HQL执行此查询,但可以使用如下本机SQL查询:

IQuery sqlQuery = sess.CreateSQLQuery("select Id,Table1_Id....", "ClassName", typeof(ClassName));
sqlQuery.SetMaxResults(50);
IList entities = sqlQuery.List();
为了便于将来参考,最好使用抽象类型来表达您的问题。表1/表2/表3使问题难以理解


Union select真的有必要吗?这基本上是在resultset中添加了一行,如果希望返回该实体,您也可以在代码中轻松创建该实体

NHibernate处理您尚未显示的域对象。你怎么期望别人知道你有什么对象以及它们与SQL表的关系呢?它是一个具有int-Id的对象,表1-oTable1、表2-oTable2和表3-oTable3。对于表1、2、3,一个具有int Id的对象。一个DB Table pro Object.NHibernate可用于您尚未显示的域对象。你怎么期望别人知道你有什么对象以及它们与SQL表的关系呢?它是一个具有int-Id的对象,表1-oTable1、表2-oTable2和表3-oTable3。对于表1、2、3,一个具有int Id的对象。一个DB Table pro对象。