JPA,从@ManyToMany关系生成表

时间:2017-05-06 14:00:27

标签: hibernate jpa many-to-many

我有课程:

@Entity
public class User {
    @ManyToMany
    public List<Role> roles = new LinkedList<>();
}
@Entity
public class Role {
}

Jpa / Hibernate为这些类生成了三个表:

  • 用户(id)
  • 角色(身份证)
  • User_Role(user_id,role_id)

现在我想得到具体角色的用户列表f.e。:role_id = 4

我怎样才能实现这个目标?没有像User_Role这样的实体,所以我会要求数据吗?

1 个答案:

答案 0 :(得分:1)

感谢JB Nizet,我已经解决了这个问题。

贝娄正在编码:

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();
}