CriteriaBuilder - пункт выбора на подклассе - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю с 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...