我有三个表: 区域 区域 国家
区域 与 Region 和 地区 与 国家/地区 具有一对多关系。
我只需要用确定的国家建造一棵树。
示例: 这是一棵完整的树
0 -> Area
/ | \
1 2 3 -> Region
/ \ | / \
4 5 6 7 8 -> Country
我必须从4-6-7国家开始过滤这棵树,像这样:
0
/ | \
1 2 3
/ | /
4 6 7
gettig的jpql查询非常简单。但是不幸的是,当我对地区/国家使用getter方法时,他返回了所有地区/国家。有一种方法可以仅使用JPA获得我需要的过滤后的地区/国家/地区?
答案 0 :(得分:0)
如果您使用的是Hibernate,则可以尝试使用过滤器。
Searches the map looking for the first element where the given function returns a Some value.
要在当前的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 {
}