Spring Data: Native Query, отображение в Custom Bean, Aliased Columns; не используя проекцию) - PullRequest
0 голосов
/ 02 мая 2018

Мне не удалось найти какие-либо конкретные решения:

У меня есть собственный запрос в Spring Data, и мне нужно сопоставить набор результатов с пользовательским объектом EJB.

@Query(query = "select id as activityId, activity_title as activityTitle,
                 activity_instructions as activityInstructions   from activities_t  " +
               "where case when activity_code ~ '^\\d+$' " +  // Digits only 
               "           then cast(activity_code as int) between :firstId and :lastActivityId end", 
                  resultSetMapping="myQueryResultSet",         
                  name = "myQuery")
public List<Activity> findActivities(@Param("firstId") int firstId, @Param("lastId") int lastId);

Проблема в том, что для этого нужно вернуть пользовательский объект Activity, а не объект @Entity ActivitiesT.

Activity - это пользовательский POJO, который имеет подмножество полей ActivitiesT, , а некоторые столбцы имеют несколько другое имя :

Activity.java, 3 поля с геттерами / сеттерами

activityId   (ACTIVITIES_T.ID)  <-- this is differently-named
activityTitle (ACTIVITIES_T.ACTIVITY_TITLE)  <-- same name
activityInstructions (ACTIVITIES_T.ACTIVITY_INSTRUCTIONS)  <-- same name

Я нашел здесь одно решение, но оно не работает для меня, потому что у меня псевдоним с другим именем: Spring Data JPA отображает собственный результат запроса в не-Entity POJO

Их решение заключается в использовании

@SqlResultSetMapping(
    name="groupDetailsMapping",
    classes={
        @ConstructorResult(
            targetClass=GroupDetails.class,
            columns={
                @ColumnResult(name="GROUP_ID"),
                @ColumnResult(name="USER_ID")
            }
        )
    }
)

В ответ они предполагают, что все столбцы в пользовательском POJO названы так же, как и в ожидаемом объекте @Entity. Для меня это не так. Кроме того, я не могу поместить SqlResultSetMapping в мой метод репозитория Spring Data JPA.

Какие-нибудь решения для этого?

...