Nhibernate和max(uniqueID)作为三个标准之一?

时间:2012-10-15 17:51:01

标签: nhibernate nhibernate-mapping

我有一个包含许多列的数据库表,一个主键(icd_data_id)和一个外键(encounter_id)。

我有一个特殊的标准,应该只出现一次,但由于过去的历史,我不能确定只有一条记录符合标准,因此,我试图得到最后一个值。

我不知道如何使用我的映射文件和查询来解决这个问题。这是映射文件中我的类中的一部分。

 <class name="Surgery">
<id name="ID" column="icd_data_id" type="Int32">
  <generator class="identity"/>
</id>

<property name="EncounterID" column="event_id" type="int" />
<property name="SpongeCountDone" column="sponge_removed" type="AnsiString" />

<more attributes here, excluded for brevity>

<property name="Category" column="category" type="AnsiString" />
</class>

我想得的是具有max(icd_data_id)的行,其中Category ='XYZ'和EncounterID = 123.

我正在寻找的类别值将始终是静态的,但EncounterID将是 是从这个表中获取数据时我将在代码中拥有的值。

如果我不清楚,那么在这个类别不是XYZ的表中有这个encounterID的其他记录,并且每次遭遇都应该只有一个Category = XYZ,但是可能会有不止一个。

这里有没有人有过如何编写三个标准的经验?

1 个答案:

答案 0 :(得分:1)

在记事本中执行此操作,但它可能如下所示:

var results = session.CreateQuery("from Surgery p where Category='XYZ' and EncounterID=123 and p.icd_data_id in ( select max(p2.icd_data_id) from Surgery p2 group by p2.icd_data_id)")