У меня есть объект Напоминание , который содержит коллекцию ReminderSchedule .Это мое отображение:
<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Reminder" table="Reminders">
<id name="Code" type="System.Guid">
<column name="ReminderCode" />
<generator class="guid.comb" />
</id>
...
<set access="field.pascalcase-underscore" cascade="all-delete-orphan" inverse="true" lazy="false" name="Schedules" mutable="true">
<key foreign-key="FK_Schedules_Reminders">
<column name="ReminderCode" />
</key>
<one-to-many class="ReminderSchedule" />
</set>
</class>
Это отображение для сущности ReminderSchedule :
<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="ReminderSchedule" table="ReminderSchedules">
<id name="Code" type="System.Guid">
<column name="ReminderScheduleCode" />
<generator class="guid.comb" />
</id>
<property name="NextSchedule" type="System.DateTime">
<column name="NextSchedule" index="ReminderScheduleK01" not-null="true" />
</property>
<many-to-one class="Reminder" foreign-key="FK_ReminderScheduleToReminder" name="Reminder">
<column name="ReminderCode" index="ReminderScheduleK02" not-null="true" />
</many-to-one>
</class>
Таблица ReminderSchedules содержит запись для каждого нового сценария, связанного снапоминание.Я могу закрыть расписание (Closed = 1) и перенести новое.
В этой ситуации у меня будут новые записи с Closed = 0, и в поле NextSchedule будет указана дата / время следующего расписания.
Я уже использую CreateCriteria для фильтрации напоминаний, и это работает очень хорошо.Теперь я хотел бы получить напоминания, у которых нет открытого ReminderSchedule.
Я выяснил, как это сделать с помощью запроса:
SELECT * FROM Reminders
WHERE ReminderCode
NOT IN (
SELECT LastReschedule.ReminderCode FROM (
SELECT ReminderCode, MAX(NextSchedule) MaxSchedule
FROM ReminderSchedules
WHERE Closed = 1
GROUP BY ReminderCode) LastReschedule
)
ORDER BY Reminders.ReminderCode
, но я не знаю, как перевести его в критерии, действительные для nhibernate.
Есть ли кто-нибудь, кто может мне помочь?Было бы очень признательно.