java - 如何在双向多对多映射中访问数据
问题描述
UserDetail.java(模型类)
@Entity
public class UserDetail {
@Id
private String email;
private String name;
private String password;
@ManyToMany(cascade = CascadeType.ALL)
private List<Role> role;
@ManyToMany(cascade = CascadeType.ALL,mappedBy = "user")
private List<GroupDetail> group;
}
GroupDetail.java (模型类)
@Entity
public class GroupDetail {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(unique = true)
private String groupName;
@ManyToMany(cascade = CascadeType.ALL)
private List<UserDetail> user;
@ManyToMany(cascade = CascadeType.ALL)
private List<Role> role;
}
在这里你可以看到 GroupDetail 是关联的所有者,Hibernate 只会在维护关联时检查那一方。
那么,如何使用用户电子邮件获取 GroupDetail 列表?
解决方案
以下应该为您工作:
select userDtl.group from UserDetail userDtl where userDtl.email = 'Your Email'
如果这不起作用,那么您可以尝试像这样显式使用 join:
select g from UserDetail u join u.group g where u.email = 'Your Email'
推荐阅读
- c - 通过调用无意返回的函数来退出 switch 语句是一种好的编码习惯吗
- mysql - 触发器检查两个表上的多个值是否相等,然后更新表
- c# - 如何在 xamarin 表单中创建具有两种布局的页面
- c++ - 在 C++ 中使用取决于函数的大小初始化数组
- sql - 将数据从一个表迁移到另一个表
- java - 信件计数应用程序
- mongodb - 使用 mongodb 和 kafka 消费者的并发更新问题
- c - 如何执行简单的 buffer_overflow 攻击?
- tensorflow - Tensorflow/Keras - 如何暴露类别之间的关系?
- react-native - 如何在本机反应中输入这种“xxx-xxx-xxxx”格式的电话号码?