Как сохранить отфильтрованного дочернего элемента в сущности - PullRequest
0 голосов
/ 14 октября 2018

У меня есть три таблицы: Область Регион Страна

Область имеет отношение OneToMany с Регион и Регион имеет отношение OneTo Many с Страна .

Мне нужно построить дерево только с определенной страной.

Пример: это полное дерево

         0   -> Area
       / | \
      1  2  3  -> Region
    /  \ | / \
   4   5 6 7  8  -> Country

Мне нужно отфильтровать это дерево, начиная со стран 4-6-7, например:

         0
       / | \
      1  2  3
    /    |  / 
   4     6 7  

theЗапрос jpql для получения областей с этими странами довольно прост.Но, к сожалению, когда я использую метод получения для региона / страны, он возвращает весь регион / страну.Есть способ получить ТОЛЬКО отфильтрованный регион / страну, который мне нужен, используя JPA?

1 Ответ

0 голосов
/ 15 октября 2018

Если вы используете Hibernate, вы можете попробовать использовать фильтры.

class Area {
    @OneToMany(...)
    @Filter(name = "regionFilter")  
    Set<Region> regions = new HashSet<Region>();
}

@FilterDef(name = "regionFilter", 
    defaultCondition = "country.id = :countryId",
    parameters = {@ParamDef(name = nameParameter, type = typeParameter)})
class Region {
}

Чтобы включить фильтрацию в текущем сеансе Hibernate, вы должны включить этот фильтр и поместить в него необходимые параметры:

session.enableFilter("regionFilter")
session.getEnabledFilter("regionFilter").setParameter("countryId", value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...