【发布时间】:2018-05-07 20:29:54
【问题描述】:
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);
}
我正在尝试使用上面的代码来
- 在城市表中选择publicId等于给定字符串的城市;
- 获取酒店所在城市并将其与#1 的结果进行比较。
好像出了点问题。这是我第一次使用规范,任何提示都是有帮助的。 谢谢。
【问题讨论】:
-
您似乎有使用 JPA-Specification 的经验,您能帮我吗? stackoverflow.com/questions/70409759/…
标签: java spring-data-jpa