我正在使用spring-boot 2.0.8和Java 8 我在我的API中使用CriteriaBuilder进行搜索请求。
我不知道如何处理新请求。我的API将搜索自他所在城市以来的客户
我的模特
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(max = 100)
@Column(name = "name", length = 100, nullable = false)
private String name;
....
}
然后:
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column(name = "libelle_1", nullable = false)
private String label;
@Size(max = 100)
@Column(name = "ville", length = 100)
private String city;
@ManyToOne
private Customer customer;
}
在我的实际课堂上,我这样做:
public Predicate toPredicate(Root<Customer> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<>();
if (!StringUtils.isEmpty(criteria.getNom())) {
predicates.add(cb.like(cb.lower(root.get("nom")), "%" + criteria.getNom() + "%"));
}
if (!StringUtils.isEmpty(criteria.getPrenom())) {
predicates.add(cb.like(cb.lower(root.get("prenom")), "%" + criteria.getPrenom() + "%"));
....
}
在SQL中,我会:
SELECT * from Customer m
INNER JOIN ADDRESS a ON a.customer_id = m.id
WHERE a.city like '{MyValue}'
我想在“客户”中搜索“城市”的值。因为我没有在客户模型中解决地址字段,我该如何加入?