Отображение необработанного sql запроса в объект DTO Spring - PullRequest
0 голосов
/ 27 февраля 2020

SPRING BOOT, JAVA 11, POSTGRES

У меня большой SQL запрос:

select c.id,c.image_url,c.status,c.name, cat.id,cat.name
from client_organization o join organization c
on o.organization_id = c.id
join client w on o.client_id = w.id
join org_category cat on c.category_id = cat.id
where w.id = ?

Так что мне нужно преобразовать данный результат в Список данных Передача объектов (DTO). Если это важно, вот мой DTO (конструктор, геттеры и сеттеры не включены):

public class OrganizationListDto {
    Long id;
    String image;
    Boolean status;
    String name;
    Long categoryId;
    String categoryName;
}

Я искал решение в течение нескольких дней и обнаружил, что эта операция может быть реализована различными способами ( jdb c, hibernate et c) Поэтому, пожалуйста, объясните мне, что и когда мне нужно их использовать? Как реализовать эту операцию?

1 Ответ

0 голосов
/ 27 февраля 2020
Follow the below approach have used spingJpa

@ Служба публикации c класс OrganizationServiceImpl

{
    @Autowired
    OrganizationListRepository organizationListRepository;

        public OrganizationListDto  fetch(usrId)
        {
        OrganizationListDto orgListData = new OrganizationListDto();
    List<OrganizationListMapping> orgData = organizationListRepository.fetchData(usrId);
    BeanUtils.copy(orgData,orgListData)

        return orgData;
        }

}

@ Репозиторий публикации c Интерфейс OrganizationListRepository расширяет JpaRepository {

@Query(native="true",value="select  cat.id as id,cat.name as name
from client_organization o join organization c
on o.organization_id = c.id
join client w on o.client_id = w.id
join org_category cat on c.category_id = cat.id
where w.id = usrId"
OrganizationListMapping fetchData(@Param ("usrId") Integer usrId);
}

public interface OrganizationListMapping {
    public Long getId();
    public String getName();

}


public class OrganizationListDto {
    Long id;
    String name;

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