jpa - JPA Criteria API - 多值列
问题描述
说我有many-to-many
关系:
@Entity
public class User {
...
@ManyToMany( mappedBy="users")
public Set<Group> groups = new HashSet<Group>();
public String name;
...
}
还有一个 Group 类:
public class Group {
@JoinTable(name="User_Group")
public Set<User> users = new HashSet<User>();
public String name;
}
现在,我想选择一个用户及其所有组。理想情况下 - 这将是一个Set<UserDto>
地方UserDto
:
public class UserDto {
public String name;
public Set<String> groupNames; // assuming concatenating all names straight from query isn't trivial
}
我找不到办法做到这一点,据我所知:
CriteriaBuilder cb = JPA.em().getCriteriaBuilder();
CriteriaQuery<UserDto> cq = cb.createQuery(UserDto.class);
Root<UserDto> root = cq.from(User.class);
SetJoin<User, Group> users = root.join(User_.groups);
cq.multiselect(root.get(User_.name), cb.array(users.get(Group_.id)));
Collection<UserDto> UsersData = new HashSet<>();
并得到multiselect selections cannot contain compound array-valued elements
解决方案
推荐阅读
- arrays - 长度超过 255 个字符的数组公式和 .Replace 不工作的 VBA
- postgresql - 我无法将 csv 导入 pgadmin4,因为 PERMISSION DENIED
- c# - 通过 React 客户端应用程序连接到 Ocelot Api 网关中的 SignalR 集线器时出现未处理的拒绝(错误)(HttpError)
- java - [Android Studio ]从其他颜色中获取相似颜色
- python-3.x - 为什么嵌套命令不适用于 discord.py?
- javascript - 服务器在 axios 中发送原始图像,如何将其转换为 base64 或其他方式使用此图像
- c# - 如何在 C# 中列出时间日期?
- javascript - 我正在尝试将从我的 API 接收到的数据放入表中,但没有显示任何内容
- java - Javac 命令在手动输入时有效,但在 Makefile 中运行时无效
- python - 单击拖动函数 Maya Python