Коллекции проекций Spring Data JPA - PullRequest
1 голос
/ 12 января 2020

Как я могу получить все разрешения, связанные с использованием проекций пользователем, при этом сохраняя проекцию закрытой?

Пользователь

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

Разрешение

public enum Permission {
    ADD, UPDATE, DELETE
}

Запрос UserRepository

@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

1 Ответ

1 голос
/ 14 января 2020

Просто измените ваш запрос на

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

Это должно работать.

...