Spring Data:Native Query,map to Custom Bean,Aliased Columns;不使用投影)

时间:2018-05-02 16:06:54

标签: sql spring spring-data spring-data-jpa

我还没有找到任何具体的解决方案:

我在Spring Data中有一个Native Query,需要将结果集映射到自定义数据bean对象。

@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个字段,包含getter / setters

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 map the native query result to Non-Entity POJO

他们的解决方案是使用

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

他们在答案中假设自定义POJO中的所有列都与预期的@Entity对象中的列相同。对我来说并非如此。另外,我不能在我的Spring Data JPA Repository方法上放置SqlResultSetMapping。

对此有何解决方案?

0 个答案:

没有答案