Отображение страницы MyObject на страницу MyObjectDTO - PullRequest
0 голосов
/ 19 июня 2019

Я использую Camel-Dozer для отображения MyObject в MyObjectDTO в моем проекте. Возвращение репозитория пружины Page<MyObject>. Мне нужно сопоставить Page<MyObject> с Page<MyObjectDTO>. Есть хороший способ для этого отображения без итерации Page.content и преобразования для каждого элемента?

Я отображаю один объект следующим образом:

dozerBeanMapping.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">

    <mapping>
        <class-a>ru.test.MyObject</class-a>
        <class-b>ru.test.MyObjectDTO</class-b>
        <field>
            <a>myField</a>
            <b>testField</b>
        </field>
    </mapping>
</mappings>

RestRoute.java

  rest("/search").description("")
                .get("/{id}")
                .consumes("application/json").to("direct:getMyObjectByID")

 from("direct:getMyObjectByID")
                .routeId("direct:getMyObjectByID")
                .bean("myObjectRepository", "getMyObjectById(${header.id})")
                .to("dozer:transformMyObjectDTO?mappingFile=dozerBeanMapping.xml&targetModel=ru.test.MyObjectDTO")

1 Ответ

0 голосов
/ 19 июня 2019

Мое временное ужасное решение: немедленно вернуть список DTO из репозитория Spring Data.

@Repository("myObjectRepository")
public interface MyObjectRepository extends CrudRepository<MyObject, Integer> {

 @Query(value = "SELECT new ru.test.MyObjectDTO(l.id, l.otherfields)" +
            " from MyObject l where l.otherObject=:otherObject")
    Page<MyObjectDTO> getAllByOtherObject(@Param("otherObject") OtherObject otherObject, Pageable pageable);
}
...