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等于给定的字符串。
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);
}
我尝试使用上面的代码
似乎出了问题。这是我第一次使用规范,任何提示都有帮助。 感谢。
答案 0 :(得分:0)
大声笑,我刚刚找到了最简单的解决方案。
return cb.equal(root.get("city").get("publicId"), criteria.getValue().toString());