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が指定された文字列と等しいすべてのホテルを検索したいと思います。私はのpublicIdは、与えられた文字列に等しいです街テーブルの単方向多対一のスプリングデータjpa指定
- 選択都市に上記のコードを使用してやろうとしている
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); }
。
- ホテルの都市を取得し、#1の結果と比較してください。
これは間違っているようです。仕様を使用したのは初めてのことですが、ヒントがあれば助かります。おかげさまで