微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot JPA本机查询通过将自定义函数应用于记录来

如何解决Spring Boot JPA本机查询通过将自定义函数应用于记录来

我正在使用JDK 13和Spring Boot 2.3。

我有以下实体:

Entity
@Table(name = "user_permission")
public class Permission {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    // Constructors and getter/setter ommitted
}

public class Role {

    private Long id;
    private String name;
    private List<Permission> permissions;
    
    //Constructor and getter/setter ommitted
}

存储库-权限

@Repository
public interface PermissionRepository extends JpaRepository<Permission,Long> {
    List<Permission> findAll();
    Optional<Permission> findById(Long id);

}

我正在尝试编写Role存储库(自定义方法),我的本机查询将在该存储库中返回

Query query = entityManager.createNativeQuery(
"select r.id,r.\"name\",p.id permission_id FROM my_table"
);

基本上,它将返回该角色的role.id,role.name和Permission_id。

enter image description here

一个角色可以具有多个权限。

例如

enter image description here

我想获取上面的结果列表,对每行应用“ findById(1)”(例如)方法并创建Permission对象,因此理想情况下,每行都可以转换为Role Object,即。

id,name,List<Permission>

稍后我将根据角色分组。

如何将nativequery输出转换为List? 注意:角色具有第3个元素作为“权限”列表,输出将仅给出permisison_id,需要基于“ permission_id”构建权限对象(存在该方法)并转换为“列表”(每行仅在列表中一个元素)。以后将根据分组依据进行合并。

最终要求:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。