JPQL Создать новый объект в операторе выбора с полем коллекции - PullRequest
0 голосов
/ 07 ноября 2018

Как получить список, установить (один-ко-многим) в JPA-запросе с оператором new.

Например, у меня есть следующие классы:

 @Entity
    JobDetails {
       private String name;
       @OneToMany
       private Set<Items> items;
       private Customer c;
    }

@Entity
Customer {
   private int merchantId;
}

UserAndCustomerDto{
   private int merchantId;
   private String name;
   private Set<Items> items;

   public UserAndCustomerDto(int merchantId, String name, Set<Items> items) {
     ...
    }
}

Вот хранилище с запросом выбора:

 @Query("
    select new UserAndCustomerDto(
        c.merchantId,
        j.name,
        items
       ) from Job j
              left join j.c as c
              left join j.items as items
    ")
    UserAndCustomerDto findDto()

И исключение касается неверного конструктора, поэтому вместо построения DTO, используя

  • new DTO (String, int, Set < Item > )

он пытается построить это:

  • new DTO (String, int, Item)

Согласно doc-n должно работать: HQL Doc

Как это исправить или возможно ли построить этот запрос с использованием Hibernate Criteria?

...