QueryDSL извлекает коллекцию наборов в проекции SELECT - PullRequest
0 голосов
/ 24 октября 2018

У меня есть вложенная структура сущностей JPA, которая выглядит примерно так:

@Entity
public class Applicant {

  @OneToMany()
  private Set<Address> addresses;

  // other applicant fields

}

@Entity
public class Address {

  private String houseName;

  private String houseNumber;

  private String postcode;

}

И я пытаюсь получить сведения о заявителе с помощью набора адресов по следующему запросу, но он возвращает «Несоответствие типов»

private static final ConstructorExpression<AddressEntity> qAddresses = QAddressEntity.create(
        qAddressEntity.houseName, qAddressEntity.houseNumber, qAddressEntity.postcode);

@Test
public void shouldTestAddressWithProjection() {
    JPAQuery<ApplicationEntity> jpaQuery = new JPAQuery<>(entityManager);
    QueryResults<ApplicantEntity> queryResults = jpaQuery.select(
            Projections.bean(ApplicantEntity.class, qApplicantEntity.forename, qApplicantEntity.surname,
                    GroupBy.set(qAddresses).as("addresses")))
            .from(qApplicantEntity)
            .leftJoin(qApplicantEntity.addresses, qAddressEntity)
            .where(qApplicantEntity.forename.startsWithIgnoreCase("Nikki"))
            .fetchResults();

}

Я знаю о том, что я могу использовать .transform(), и он работает, но я теряю нумерацию страниц, которая идет с fetchResults().Пожалуйста, дайте мне знать решение этой проблемы.

...