2014-03-03 58 views
0

我有我认为是一个简单的查询,但不能为我的生活弄清楚如何使用nhibernate 2.X来做到这一点。Nhibernate:返回加入同一张表的结果

假设我有这个简单的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> 

干杯

+0

什么是你得到错误信息?或者它根本不返回任何行? –

+0

它不能将secondary_details中的任何列映射到域,因为它们显然不存在。任何想法我可以如何处理这个? – AllStar11

+0

你想做一次连接或递归树状提取吗?你还可以添加一个你的目标代码的小样本。 –

回答

0

试试这个:

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>();