首页 > 解决方案 > Spring Data JPA 投影集合

问题描述

如何在保持投影关闭的同时获得与使用投影的用户相关的所有权限?

用户

@ElementCollection
@Enumerated(EnumType.STRING)
private List<Permission> permissions;

允许

public enum Permission {
    ADD, UPDATE, DELETE
}

用户存储库查询

@Query("select u.username as username, p as permissions from User u " 
    + "inner join u.permissions p"
List<UserWithPermissions> findAllProjection();

UserWithPermissions 投影

public interface UserWithPermissions {
    String getUsername();
    List<Permission> getPermissions();
}

我想得到的输出

User1 : ADD
User2 : ADD DELETE

我得到的输出

User1 : ADD
User2 : ADD
User2 : DELETE

标签: springspring-bootspring-data-jpaspring-data

解决方案


只需将您的查询更改为

@Query("select u from User u")
List<UserWithPermissions> findAllProjection();

这应该有效。


推荐阅读