Как правильно использовать HQL для данных с флагами удаления

У меня есть несколько таблиц, в которых удалены все логические поля. Каков наилучший способ фильтрации загруженных коллекций (с помощью hql), например:

from worker as w left join  w.taskSet as t 
where (w.deleted!=true or w.deleted is null )  
and (t.deleted!=true or t.deleted is null )

Не вернет рабочий экземпляр, если у него есть работа, которая была удалена


person sherif    schedule 20.06.2015    source источник


Ответы (2)


Фильтрация применяется к извлекаемому корневому объекту (например, Worker), и коллекции не будут отфильтровываться.

Вам лучше определить фильтр для обеих сущностей, а также для ассоциаций "один ко многим".

person Vlad Mihalcea    schedule 20.06.2015

Это решение сработало для меня



@FilterDef(name="NOT_DELETED")
@Filters({
    @Filter(name="NOT_DELETED", condition="not deleted or deleted is null")
})
@Entity
...
   @Column
   Boolean deleted
...



использование

session.enableFilter("NOT_DELETED");

person sherif    schedule 03.09.2015