【问题标题】:Nhibernate: return results that join on the same tableNhibernate:返回连接在同一张表上的结果
【发布时间】:2014-03-03 14:29:19
【问题描述】:

我有一个我认为很简单的查询,但我一生都无法弄清楚如何使用 nhibernate 2.X 做到这一点。

假设我有一个连接同一张表的简单 SQL 查询,我如何返回对象列表?

select   primary_details.*, 
         secondary_details.*, 
from     details primary_details 
         JOIN details secondary_details 
         ON primary_details.ID = secondary_details.ID;

现在显然还有其他标准可以应用,所以我不会得到重复的相同数据的结果集,但我已经为我的问题简化了它。

如果我只是从详细信息中进行选择,我的详细信息域和映射工作正常,但我需要的是一个包含数据的结果集,以便我可以绘制从 primary_details 到 secondary_details 的列。

任何想法将不胜感激。即使解决方案是以某种方式在 nhibernate 之外处理这个问题。

简化的映射文件:

<class name="details" table="details" lazy="true" schema-       
action="none">
<id name="ID">
  <column name="ID" sql-type="varchar(32)" />
</id>
<property name="Name">
  <column name="Name" not-null="false" />
</property>
<property name="Value">
  <column name="laboratory_id" not-null="false" />
</property>
</class>

干杯

【问题讨论】:

  • 您收到的错误信息是什么?或者它根本不返回任何行?
  • 它无法将 secondary_details 中的任何列映射到域,因为它们显然不存在。知道如何解决这个问题吗?
  • 您想进行一次连接还是递归树状提取?您还可以添加一小部分目标代码吗?

标签: c# nhibernate nhibernate-mapping


【解决方案1】:

试试这个:

var session.CreateSQLQuery("select {pd.*}, {sd.*}, from details pd JOIN details sd ON pd.ID = sd.ID").AddEntity("sd", typeof(details)).AddEntity("pd", typeof(details)).List<details>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2014-08-17
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多