spring - 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
解决方案
只需将您的查询更改为
@Query("select u from User u")
List<UserWithPermissions> findAllProjection();
这应该有效。
推荐阅读
- cassandra - 将字符串转换为日期并使用大于运算符的查询在 cassandra 中未按预期工作
- reactjs - 如何修复“无法设置未定义的属性”道具“错误
- unity3d - Unity-2019.1.0f2 中文件混合的问题
- javascript - Trying to get two circles to transition simultaneously
- jenkins - RTC:Jenkins 将组件签出为其子目录而不是整个目录
- python - PyCharm 不建议自动完成并标记未解决的引用
- python-3.x - 将石灰表格解释器与 Keras 一起使用时出现关键错误
- python - 添加两个数据框,但只有少数选定的列,并且仅当其他列值相同时
- flutter - 如何在颤动中安排边框布局?
- reactjs - 使用 window.require 开玩笑测试 Electron/React 组件