CriteriaBuilder находит указанное значение c в объединенной таблице - PullRequest
0 голосов
/ 21 февраля 2020

Это запрос SQL, который я хочу, чтобы SpringBoot выполнил:

Select * from Departement 
Where Departement.region.libelle like "fr" 

enter image description here

Часть "соединение" уже выполнена в объекте "departement. java":

  @ManyToOne (fetch = FetchType.EAGER, optional = false)
  @JoinColumn(name = "id_regions", nullable = false) // declarer la foreign key
  private Region region;

В DepartementRepository. java

CriteriaQuery<Departement> criteriaQuery = criteriaBuilder.createQuery(Departement.class);
Root<Departement> entityRoot = criteriaQuery.from(Departement.class);

Root<Region> regionRoot = criteriaQuery.from(Region.class);

ParameterExpression<String> parameter = criteriaBuilder.parameter(String.class, "firstParameter");

List<Predicate> predicates = new ArrayList<Predicate>();
Expression<String> regionExp = regionRoot.<String>get("libelle");
predicates.add(criteriaBuilder.like(regionExp, parameter));

criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));

TypedQuery<Departement> jpqlQuery = entityManager.createQuery(criteriaQuery);
jpqlQuery.setParameter("firstParameter", "%" + fr+ "%");

List<Departement> totalResults = jpqlQuery.getResultList();

Я хочу, чтобы результатом был объект типа "Departement", а не объединенный результат из двух таблиц enter image description here

Кто-нибудь знает, как этого добиться?

...