Я работаю с spring-boot 2.0.8 и Java 8
Я использую CriteriaBuilder для поискового запроса в моих API.
Я не знаю, как мне поступить с моим новым запросом. Мой 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}'
Я хочу найти для клиента значение City. Как я могу присоединиться, потому что у меня нет поля адреса в модели Customer?