JPA规范的“加入”和“获取”之间的用例区别是什么?

时间:2019-03-27 14:10:19

标签: java spring-boot jpa specifications

假设我有一个实体Hotel,它引用了一个实体Address,它也引用了一个实体City

当我使用JPA的Specifications通过City进行酒店搜索时,我发现在Specification类中,JoinPath会产生相同的结果:

public Predicate toPredicate(Root<BidRequest> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    Path<Address> path = root.get("address").get("city");
    Predicate p = cb.equal(path.get("id"), criteria.getId());
    return p;
}

public Predicate toPredicate(Root<BidRequest> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    Join<Hotel,City> join = root.join("address");
    Path<Integer> path = join.get("city");
    Predicate p = cb.equal(path.get("id"), criteria.getId());
    return p;
}

那么root.joinroot.get有什么区别?何时应该使用一个而不是另一个?

0 个答案:

没有答案