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 (将#修改为@)