Spring Data JPA将本机查询结果映射到非实体POJO
我有一个带有本地查询的Spring Data Repository方法
@Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true) GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
并且我想将结果映射到Non-Entity POJO GroupDetails
。
是否可以,如果可以,请提供示例吗?
回答:
假设在Orid的答案中使用GroupDetails,你是否尝试过JPA 2.1 @ConstructorResult?
@SqlResultSetMapping( name="groupDetailsMapping",
classes={
@ConstructorResult(
targetClass=GroupDetails.class,
columns={
@ColumnResult(name="GROUP_ID"),
@ColumnResult(name="USER_ID")
}
)
}
)
@NamedNativeQuery(name="getGroupDetails", query="SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", resultSetMapping="groupDetailsMapping")
并在存储库界面中使用以下命令:
GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
根据springJPA的数据文件,spring将首先尝试找到一个名为查询匹配你的方法名-因此使用@NamedNativeQuery
,@SqlResultSetMapping
并且@ConstructorResult
你应该能够实现这一行为
以上是 Spring Data JPA将本机查询结果映射到非实体POJO 的全部内容, 来源链接: utcz.com/qa/431071.html