Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JPA,从@ManyToMany关系生成表中获取数据_Hibernate_Jpa_Many To Many - Fatal编程技术网

Hibernate JPA,从@ManyToMany关系生成表中获取数据

Hibernate JPA,从@ManyToMany关系生成表中获取数据,hibernate,jpa,many-to-many,Hibernate,Jpa,Many To Many,我有以下课程: @Entity public class User { @ManyToMany public List<Role> roles = new LinkedList<>(); } @Entity public class Role { } Jpa/Hibernate为这些类生成了三个表: @Entity public class User { @ManyToMany public List<Role> roles

我有以下课程:

@Entity
public class User {
    @ManyToMany
    public List<Role> roles = new LinkedList<>();
}
@Entity
public class Role {
}
Jpa/Hibernate为这些类生成了三个表:

@Entity
public class User {
    @ManyToMany
    public List<Role> roles = new LinkedList<>();
}
@Entity
public class Role {
}
用户id 角色id 用户\角色用户\ id,角色\ id 现在我想得到具体角色为f.e.:role\u id=4的用户列表

我怎样才能做到这一点?没有像User_Role这样的实体,所以我会要求提供数据?

多亏了,我已经解决了这个问题

以下是工作代码:

import play.db.jpa.JPA;
import javax.persistence.Query;

public static List<User> findByRole(Role role) {
    Query query = JPA
        .em()
        .createQuery("select distinct u from User u join u.roles r where r.id =:role_id", User.class)
        .setParameter("role_id", role.id);
    return query.getResultList();
}

使用查询:从用户u join u.roles r中选择distinct u,其中r.id=4。注意:这是一个角色列表,所以请命名您的字段角色,而不是角色。请阅读手册:。您还可以使关联双向,按ID加载角色,并获取其用户列表。所有这些都在手册中解释。谢谢你给我指点这个教程。太棒了。你的回答也很好。它起作用了。如果你能把它作为一个答案,我将关闭这个问题。角色拼写错误。我建议您不要使用ManyToMany,而是将其分解,以便映射表也是一个实体。如果能给你更好的控制,也能给你更好的表现。我建议您通过Hibernate工程师之一查看此视频,并将其添加到关系部分