首页 > 解决方案 > 如何在双向多对多映射中访问数据

问题描述

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 列表?

标签: javaspringhibernate

解决方案


以下应该为您工作:

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'


推荐阅读