查询中的JPA谓词

时间:2017-01-18 14:28:15

标签: jpa

我有一个路由类,在这个类中,我定义了一个位置集合。

@ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
    @JoinTable(name = "route_location_map")
    private List<Location> locations;

我需要检查我的路线中是否存在特定位置

 if (locationId != null && locationId.longValue() > 0) {
                 Expression<Collection<Long>> locations = route.get("locations").get("id");

                 predicate = builder.isMember(locationId, locations);

                whereClauseList.add(predicate);

不幸的是,这个逻辑不起作用,我也没有得到任何错误。 有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

发布下一个堆栈跟踪。您需要将isMember()与您的实体或表达式一起使用。

public List<Route> findRoutes(Location location){
    ...
    Expression<Collection<Location>> locations = route.get("locations");
    predicate = builder.isMember(location, locations);
    ...
}