|
|
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Попробую упростить условие задачи, чтобы не утомлять вас своими заморочками. Итак, представим себе бюрократическую контору с высокой "бумажной дисциплиной". Перед коллективом конторы ставится задача Task, которую будут последовательно выполнять несколько сотрудников, каждый из которых выбирает следующего исполнителя по своему усмотрению. Задачу создал начальник и назначил первого исполнителя. Причем, оповестил его специальным Order-ом. Исполнитель глянул на ордер, проверил, все ли ему дали для исполнения и акцептовал ордер (или отверг - но мы этот прецедент отбросим). Как закончит исполнитель свою часть работы над задачей - надо передавать следующему. А для этого - создать новый ордер, где уже он будет инициатором, а следующий сотрудник - исполнителем. Это - цикл! Надо показать каждому сотруднику его "органайзер" - список актуальных задач на данный момент. Актуальной считается та, по которой у данного сотрудника есть акцептованный им ордер (в котором он значится исполнителем), но нет более позднего ордера, где он значится инициатором, и акцептованного следующим исполнителем. SQL-запрос мною рожается быстро, а вот Criteria - как тот Каменный цветок ;( Если отбросить условности, мне нужны ордера по задачам (уж соединения я вытащу) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 00:02 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
Курдль, Используется HQL. В нём поддерживается оператор exists. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:07 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
Не надо HQL. Достаточно заюзать Expression.Not + Expression.In ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:16 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
Как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Весь мосх растерял, пока придумывал. Теперь даже проверить не могу толком :-/ Ребята! Может поможете?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:44 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
SolYUtorКурдль, Используется HQL. В нём поддерживается оператор exists. Спасибо! Эдак я могу и до SQL-я докатиться - в нем тоже exists поддерживается! ;) Но хочется ж доказать (себе), что не зря меня в ВУЗе реляционной алгебре учили! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:11 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
Ну вот, как вариант, на Subqueries.NotExists (Northwind): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:15 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
МСУНе надо HQL. Достаточно заюзать Expression.Not + Expression.In Каким образом, если не секрет, воспользоваться этими методами, если в выборке участвуют разные кортежи одной сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:17 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
КурдльМСУНе надо HQL. Достаточно заюзать Expression.Not + Expression.In Каким образом, если не секрет, воспользоваться этими методами, если в выборке участвуют разные кортежи одной сущности? Всё дело в волшебных пузырьках: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Эти два запроса идентичны. Планы выполнения совпадают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:23 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
МСУ, Мне не кажется, что план запроса будет одинаков, но спорить лень ;) Однако, я имел в виду не SQL а Criteria-выражения и их использование в контексте "Expression.Not + Expression.In" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:35 |
|
||
|
Nhibernate. Помогите создать критерию с NOT EXISTS!
|
|||
|---|---|---|---|
|
#18+
КурдльМСУ, Мне не кажется, что план запроса будет одинаков, но спорить лень ;) Чтобы не казалось, нужно не спорить, а проверить. Тогда казаться перестанет :) КурдльОднако, я имел в виду не SQL а Criteria-выражения и их использование в контексте "Expression.Not + Expression.In" Тут я скорее всего погорячился. Без DetachedCriteria никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 11:38 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36754033&tid=1351175]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 284ms |

| 0 / 0 |
