Фильтрация по каждому объекту, полученному из БД в спящем режиме - PullRequest
0 голосов
/ 01 декабря 2019

Из моего исследования я обнаружил, что hibernate не поддерживает фильтрацию, как мне бы хотелось. Моя цель состоит в том, чтобы независимо от того, как экземпляр «Child» извлекается из базы данных (либо через ManyToOne, OneToOne, по id / запросу и т. Д.), Я бы хотел, чтобы фильтр «Child» применялся принудительно (в приведенном ниже примере он имеетзапрос 1 = 1, но в приложении он значительно сложнее и использует параметры).

Я рассмотрел многопользовательский режим гибернации, но он не обеспечивает необходимую гибкость.

Преимущество фильтров в том, что они могут быть установлены в одном центральном месте, и, что более важно, они могут быть параметризованы.

Я просматривал NamedQuery, но он отрицает цель использования ORM / массового извлечения / HQL и т. Д. поскольку каждое отдельное отношение будет извлекаться независимо, а количество запросов будет непомерно большим.

Существуют ли какие-либо внутренние классы в спящем режиме, которые я могу изменить, чтобы обеспечить такое поведение (например, с помощью замены байт-кода)?

@Entity
@FilterDef("filter")
@Filter(name="filter", condition="....")
class Parent {
   @OneToOne
   @Filter(name="filter") // doesn't work
   Child aChild;

   @OneToMany
   @Filter(name="filter") // want the filter defined on the class 'Child' and not specify the condition here
   Set<Child> manyChildren;
}

@Filter(name="filter", condition="1=1")
@Entity
class Child {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...