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工程师之一查看此视频,并将其添加到关系部分