Я написал следующий запрос
@Query(value = "SELECT DISTINCT cont FROM Contact cont" +
" LEFT JOIN FETCH cont.customer cust" +
" LEFT JOIN FETCH cont.customerLocations custLoc" +
" WHERE " +
"cont.deleted = FALSE AND " +
"custLoc.deleted = FALSE AND " +
"((cont.name LIKE %:searchQuery%) OR " +
"(cont.title LIKE %:searchQuery%) OR " +
"(cont.phone LIKE %:searchQuery%) OR " +
"(cont.email LIKE %:searchQuery%) OR " +
"(cust.name LIKE %:searchQuery%)) AND " +
"(:customerId IS NULL OR cust.id = :customerId) AND " +
"(:contactId IS NULL OR cont.id = :contactId) AND " +
"(:locationId IS NULL OR custLoc.id = :locationId) AND " +
"((:primary = FALSE AND (cont.id <> custLoc.primaryContactId OR custLoc.primaryContactId IS NULL)) " +
"OR (:primary = TRUE AND custLoc.primaryContactId IS NOT NULL AND cont.id = custLoc.primaryContactId) " +
"OR (:primary = NULL))",
countQuery = "SELECT COUNT(DISTINCT cont) FROM Contact cont" +
" LEFT JOIN cont.customer cust" +
" LEFT JOIN cont.customerLocations custLoc" +
" WHERE " +
"cont.deleted = FALSE AND " +
"custLoc.deleted = FALSE AND " +
"((cont.name LIKE %:searchQuery%) OR " +
"(cont.title LIKE %:searchQuery%) OR " +
"(cont.phone LIKE %:searchQuery%) OR " +
"(cont.email LIKE %:searchQuery%) OR " +
"(cust.name LIKE %:searchQuery%)) AND " +
"(:customerId IS NULL OR cust.id = :customerId) AND " +
"(:contactId IS NULL OR cont.id = :contactId) AND " +
"(:locationId IS NULL OR custLoc.id = :locationId) AND " +
"((:primary = FALSE AND (cont.id <> custLoc.primaryContactId OR custLoc.primaryContactId IS NULL)) " +
"OR (:primary = TRUE AND custLoc.primaryContactId IS NOT NULL AND cont.id = custLoc.primaryContactId) " +
"OR (:primary = NULL))")
Page<Contact> findByParamsNSD(@Param("searchQuery") String searchQuery,
@Param("primary") Boolean primary,
@Param("customerId") Long customerId,
@Param("contactId") Long contactId,
@Param("locationId") Long locationId,
Pageable pageable);
В результате я получил список контактов, в котором каждый контакт содержит список CustomerLocations (изображение ниже). Но мне нужен список контактов, в которых нужно дублировать контакт для каждого CustomerLocation из списка. Как я мог это получить? Текущий результат