Приветствую!
Продолжаю ковыряние с запросом, начатое вот в
этой темеАвтор: XopcT
Дата: 23.09.09
.
Вот описание задачи:
> У меня следующая ситуация: есть таблица текстовых сообщений. Для каждого сообщения нужно сохранять историю изменений. Соответственно, сами сообщения хранятся в одной таблице (Messages), изменения для них хранятся в другой (Corrections).
> По сути, сообщение — это просто id'шник в таблице, на который ссылается множество правок. Правка хранит целиковый текст и дату изменения.
> Задача состоит в том, чтобы выгрести тексты всех сообщений на определённую дату.
В проекте используется NHibernate, поэтому оптимальный вариант — обойтись только им одним. Я честно попытался делать хранимые процедуры и вызывать их из запросов хибернейта. Уткнулся в то, что запрос предполагает комбинирование двух таблиц, а хибернейт хочет выделять сущность из "чистой" таблицы.
Я попытался написАть свой запрос на "родном" sql. Он оказывается черезчур сложным — в правке сохраняется ещё и пользователь (отдельная сущность БД), оставивший её; всевозможные реквизиты (много-ко-многим) и т.д. Тут же всплыли и другие ништяки: нужно контролировать, чтобы (к примеру) пользователи с одинаковыми id'шниками не были после запроса разными инстансами. В общем, вариант с sql порождает такую кучу новых проблем, что лучше бы за него и не браться.
Поэтому, единственным вариантом вижу NHibernate. Либо через его запросы, либо через критерии. Прошу специалистов помочь. Самостоятельно не получается.