2017-11-23 2 views
0
public class Hotel{ 
    @ManyToOne(optional = false) 
    @NotNull 
    @JoinColumn(name = "hotel_city", referencedColumnName = "city_id") 
    private City city; 
} 

public class City{ 
    @Column(name = "public_id", updatable = false, unique = true) 
    @NotEmpty 
    private String publicId; 
} 

도시의 publicId가 주어진 문자열과 같은 모든 호텔을 찾고 싶습니다. 내가스프링 데이터 jpa 단방향 many-to-one에 대한

    주어, publicId은 도시 테이블에
  1. 선택 도시는 주어진 문자열로 동일에 위의 코드를 사용하여 할 노력하고있어

    public Predicate toPredicate(Root<Hotel> root, CriteriaQuery<?> query, CriteriaBuilder cb) { 
           Subquery<City> subquery = query.subquery(City.class); 
           Root<City> subRoot = subquery.from(City.class); 
           Predicate cityIdPredicate = cb.equal(subRoot.get("publicId"), criteria.getValue().toString()); 
    
           return cb.equal(root.get("city"), cityIdPredicate); 
    } 
    

    ;

  2. 호텔 도시를 구한 다음 1 번 결과와 비교해보십시오.

뭔가 잘못되었습니다. 그것은 사양을 사용하여 내 처음이야, 모든 정보가 도움이됩니다. 감사합니다. .

답변

0

LOL, 나는 방금 가장 간단한 해결책을 찾았습니다.

 return cb.equal(root.get("city").get("publicId"), criteria.getValue().toString());